项目应该相互独立到什么程度?
我有一个非常大的 Visual Studio 解决方案,其中所有项目都相互依赖。我无法从解决方案中取出单个项目并将其添加到另一台计算机的另一个解决方案中,因为它们都相互关联。
我做的事情正确吗?
例如;
考虑我的这三个项目(磁盘文件、数据转换器和数学 - .h 和 .cpp 文件对是 C++ 类;我将通过它们各自的名称来提及它们):
The Solution
|
|---- Disk File
| |
| |---- BinaryFile.h, BinaryFile.cpp
| |---- TextFile.h, TextFile.cpp
|
|---- Data Converter
| |
| |---- Utf8.h, Utf8.cpp
| |---- XmlParser.h, XmlParser.cpp
| |---- StringFormatter.h, StringFormatter.cpp
|
|---- Math
|
|---- Plotter2D.h, Plotter2D.cpp
|---- Matrix.h, Matrix.cpp
TextFile
使用Utf8
进行字符编码。这使得Disk File
依赖于Data Converter
。XmlParser
使用TextFile
。这使得Data Converter
依赖于Disk File
。Plotter2D
使用TextFile
转储一些数据以与外部软件一起使用,Matrix
在其中使用一些字符串格式化工具>::ToString()
方法。这使得Math
依赖于Disk File
和Data Converter
。
这只是几个类之间依赖关系的一个例子。事实上,我的解决方案中有更多的文件。这是一团乱七八糟的代码依赖关系。
我将与我的一位 friend 开始一个项目。他的解决方案中需要我的 Math
项目。但他要使其适应自己的解决方案并不容易,因为它会给出很多关于这些依赖项的编译器错误。
这个依赖量正常吗?我做得对吗?我在每个需要的项目中保留所有常用文件的拷贝怎么样(这可能很愚蠢,我只是问问)?
我需要你的建议。
最佳答案
总会有这样的依赖关系,但您可以使用一些方法避免它们:
要通过不包括跨模块 header 来保持 .h 文件的独立性,请在此处使用前向声明并在 .cpp 文件中使用实际的 header 文件。
对于要在函数中传递的其他 header 中定义的枚举,可以使用空指针来传递和验证 .cpp 文件中的值。
您也可以使用“extern C”函数。
关于c++ - 项目之间应该如何依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586115/