例如,在A.h:
class A{
void method();
};
和A.cpp:
#include "A.h"
void A::method(){/*do stuff*/};
和main.cpp
#include "A.h"
int main(){
A a;
a.method();
}
如何通过在main.cpp文件中仅包含A.h来从A.cpp访问方法的定义?有没有涉及makefile或IDE的技巧?
答案 0 :(得分:4)
是否存在涉及makefile或IDE的技巧?
这个"技巧"称为链接 - 将所有已编译的模块和库一起加载到可执行文件中。在您的情况下,您可以手动执行此操作:
g++ -c a.cpp -o a.o // compiling a.cpp and producing object file a.o
g++ -c main.cpp -o main.o // compiling main.cpp and producing object file main.o
g++ main.o a.o -o myprog // linking all object files together with system libraries and producing executable myprog
对于不同的编译器,命令可能看起来不同,但过程是相同的。当然你不想一次又一次地输入所有这些,所以你想要自动化。那个IDE或makefile为你做的,没有任何技巧或魔法。
答案 1 :(得分:0)
我通过在项目中添加一个新的.cpp文件来解决这个问题,该文件由Xcode自动链接到相应的.hpp文件。