我在使用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/
答案 0 :(得分:3)
类模板的成员函数应出现在头文件中。只需将功能定义从file1.cpp
移至Header.h
。
想象一下你是编译器。编译main
时,如果尝试以任何方式实例化asd
,编译器需要能够查看函数定义以生成适当的代码。例如,如果在main
中asd<int> my_asd;
,则编译器需要实例化asd
并将T
替换为int
。如果函数无法看到函数定义,则无法对函数执行此操作。