我想将类( .cpp文件)的长实现分开到单独的文件中。
例如,考虑我在类中有10个函数,并且.cpp文件中所有这10个函数的实现包含大约200行代码。
现在,问题是当所有这些函数一起创建一个类时,如何将所有这些函数分成单独的文件。
这是header(classA.h)文件中的代码示例:
Class A{
A();
~A();
double add(double a1, double a2);
double subtract(double a1, double a2);
double multiply(double a1, double a2);
double divide(double a1, double a2);
}
相应的.cpp文件是:
#include "classA.h"
double A::add(double a1, double a2){
// around 5 lines of code
subtract(a1, a2); // **add also calls subtract function**
}
double A::subtract(double a1, double a2){
// around 5 lines of code
}
double A::multiply(double a1, double a2){
// around 5 lines of code
}
double A::divide(double a1, double a2){
// around 5 lines of code
}
现在,假设我想将此.cpp文件分隔为单独的文件,例如“add.cpp”,...所有这些文件都在实现类的功能。
将这些函数分成单独的文件的问题是他们不知道类函数! (但是,我将类的.h文件包含在文件中!)
您有什么建议?
答案 0 :(得分:3)
在不同的源文件中分离函数实现没有任何问题,即使它们属于同一个类:
文件 classA_add.cpp :
#include "classA.h"
double A::add(double a1, double a2){
// around 5 lines of code
subtract(a1, a2); // **add also calls subtract function**
}
文件 classA_substract.cpp :
#include "classA.h"
double A::subtract(double a1, double a2){
// around 5 lines of code
}
文件 classA_multiply.cpp :
#include "classA.h"
double A::multiply(double a1, double a2){
// around 5 lines of code
}
文件 classA_divide.cpp :
#include "classA.h"
double A::divide(double a1, double a2){
// around 5 lines of code
}
所有这些.cpp文件都知道该类的接口,因为它在“classA.h”中声明。
但首先,检查你是否不需要在不同的类中打破该类而不是破坏实现。
答案 1 :(得分:1)
问题是当所有这些函数一起创建一个类时,如何将所有这些函数分成单独的文件。
与您(可能)已经将不同类的函数分配到单独的文件中的方式完全相同:
成员函数绝不需要在同一个源文件中,并且不需要将来自不同类的函数放在单独的源文件中。这只是一个普遍的惯例。
答案 2 :(得分:0)
只要你在每个.cpp文件中#include你的.h文件,并且将它们全部链接在你的Makefile 中,就可以在许多.cpp文件中单独执行。< / p>