2

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

头文件.h

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

文件1.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}

文件2.cpp

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

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

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

4

1 回答 1

3

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

想象一下你是编译器。编译时main,如果您尝试以asd任何方式实例化,编译器需要能够看到函数定义以生成适当的代码。例如,如果main你这样做asd<int> my_asd;,编译器需要asdT替换为实例化int。如果它看不到函数定义,它就不能对函数执行此操作。

于 2013-03-24T19:42:00.663 回答