c++ - 头文件和附加库

标签 c++ header

我正在构建一个简单的 C++ 程序,它由一个主函数和两个嵌套类组成。在每个类和函数中,我都使用字符串和 vector ——因此该软件需要额外的库。

每个类都在单独的 myClass.h 中定义文件,以及对应的myClass.cpp .

我的问题涉及其他库。假设我使用 #include <string>main.cpp .我怎样才能将该库传递给 myClass.hmyClass.cpp

最佳答案

如果您的软件足够简单(例如,几个翻译单元和少于一万行的源代码),您最好有一个单个头文件,例如myproject.h对于你所有的项目,和#include那个文件无处不在。然后,那个myproject.h header 也可以 #include外部库的外部 header (可能是标准 C++ 库中的 <vector><string>)。

在 C++ 中没有要求每个类有一个头文件(或一个翻译单元),我相信这并不总是有充分的理由(但其他一些人有不同的看法)。你可以把几个相关的类放在同一个翻译单元中,你可以在一个头文件中有很多声明。

但这一切都是意见、惯例和编码风格的问题。对于一些简单的项目来说,只要你保持连贯,这并不重要。我的观点是,在一个源文件(或头文件)中包含几千行代码不是问题,而且我通常这样编写代码。我非常不喜欢每个源文件有一个类(就像 Java 中要求的那样),因为我讨厌有数百个小文件(每个文件少于一百行)。顺便说一句,C++ 编译器可能需要更长的时间来使用这种每个文件一个类的方法编译您的项目(因为 C++ 容器标准 header ,如 <map><vector> 正在提取大量包含的代码:在我的 GCC 上5 GNU Linux 系统#include <vector> 扩展到一万多行,约340Kbytes)。

另请注意,与类层次结构的总体设计相比,源文件中类(和声明)的组织问题要小得多。例如,如果您从单个 myproject.h 开始方法(就像我建议的那样),后来对它不满意,将你的类(class)分散在几个标题中会很容易(一个小时的复制/粘贴和一些 #include -s 添加);但重新设计你的类及其继承或签名,即 refactoring你的代码,要困难得多。

研究几个 C++ 免费软件(例如 http://github.com/fish-shellPOCOcpp-netlib 和许多其他软件)的源代码(例如关于 jsoncpp ...)以形成您自己的观点。

关于c++ - 头文件和附加库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338118/

相关文章:

c++ - 如何用cocoapods修改编译顺序?

c - 是否可以检测程序是否已通过/proc/self/mem 动态链接?

调用 header 时出现 PHP AJAX 12017 错误(位置 :)

c++ - 用于密码学的 Botan vs OpenSSL vs Crypto++

c++ - 有没有更好的方法来处理异常? try-catch block 真的很丑

c++ - vector 排序和删除不起作用

http - 我们怎么能欺骗 HTTP 协议(protocol)呢?

c++ - 强制函数只接受一组特定的数据类型

C++ 使用 std::sort 进行多维字符串数组

html - 页眉、主要和页脚定位