C ++连接两个.cpp文件

时间:2013-03-24 19:40:16

标签: c++

我在使用C ++连接两个.cpp文件时遇到问题。这是我的文件

Header.h

//Header.h
template <class T> class asd{
asd();
check();
print();
}

file1.cpp

//file1.cpp
//defines all methods in class asd
#include "Header.h"
template<class T> asd<T>:: asd(T a, T b){//codes}
template<class T> T asd<T>:: check(T a){//codes}
template<class T> void asd<T>::print(){//codes}

file2.cpp

//file2.cpp
//main method
#include "Header.h"
int main(){//codes}

我不明白的是,当我将main()放在file1.cpp中时,代码运行正常,但是当我将它们分成两个文件时它不会编译。有人可以指点一下吗?

编辑: 对于那些有相同问题的人,可以在这里找到解决方案: http://www.cplusplus.com/forum/articles/14272/

1 个答案:

答案 0 :(得分:3)

类模板的成员函数应出现在头文件中。只需将功能定义从file1.cpp移至Header.h

想象一下你是编译器。编译main时,如果尝试以任何方式实例化asd,编译器需要能够查看函数定义以生成适当的代码。例如,如果在mainasd<int> my_asd;,则编译器需要实例化asd并将T替换为int。如果函数无法看到函数定义,则无法对函数执行此操作。