C++ 如何在C+中构造私有和公共API+;(头文件)

C++ 如何在C+中构造私有和公共API+;(头文件),c++,api,header-files,public,directory-structure,C++,Api,Header Files,Public,Directory Structure,我目前正在开发一个API,现在我发现在我的目录树中进行显式拆分非常有用,以便分离公共头文件和私有头文件及源文件。这样,为我的SDK构建公共和开发(私有)包就更容易了。我现在想到两个不同的选择: 1) .../LibName/Class.h .../LibName/private/ClassImpl.h .../LibName/private/LibName/ClassImpl.cpp 2) .../public/LibName/Class.h .../private/LibName/Class

我目前正在开发一个API,现在我发现在我的目录树中进行显式拆分非常有用,以便分离公共头文件和私有头文件及源文件。这样,为我的SDK构建公共和开发(私有)包就更容易了。我现在想到两个不同的选择:

1)
.../LibName/Class.h
.../LibName/private/ClassImpl.h
.../LibName/private/LibName/ClassImpl.cpp

2)
.../public/LibName/Class.h
.../private/LibName/ClassImpl.h
.../private/LibName/ClassImpl.cpp
至少对于公共文件,最好以“Libname/FileName”的方式组织文件,因为这是我的代码中包含指令的方式:

#include "LibName/FileName.h"
您认为组织API的标题的最佳选项是什么?这两个中的一个或者其他什么


谢谢

我最后选择了以下结构:

.../include/LibName1/Class.h
.../include/LibName2/OtherClas.h

.../src/LibName1/ClassImpl.h
.../src/LibName1/ClassImpl.cpp
.../src/LibName2/OtherClassImpl.h
.../src/LibName2/OtherClassImpl.h
这样,我既可以分离公共头文件(include目录)和私有源文件(src目录),也可以引用include指令中的头文件,而无需显式写入它们是公共的还是私有的:

#include "LibName1/Class.h"

此结构(或类似结构)也用于其他库,如Qt framework。

将实现放在DLL或库文件中,并让标题提供声明。我明白了,您不想发布私有文件吗?那么,为什么不创建库并将公共API写入一个头文件呢?