我的目标是创建一个非常简单的类模板。我可以在一个.cpp文件中完成此操作,但是我坚持要在.h文件中定义相同的类,在.cpp文件中定义其方法,最后在.cpp(主要)中执行它,并且会遇到一些麻烦。
因此,在class.h
中,我有以下内容:
#include<iostream>
using namespace std;
template <class T>
class templateClass {
T x, y;
public:
templateClass(T, T); // constructor
T bigger();
};
在methods.cpp
的手上有
#include<iostream>
#include"class.h"
using namespace std;
template <class T>
templateClass <T> ::templateClass(T a, T b) {
x = a;
y = b;
}
template <class T>
T templateClass<T>::bigger() {
return (x > y ? x : y);
}
最后在main.cpp
我有
#include<iostream>
#include"class.h"
using namespace std;
int main()
{
templateClass<int> obj(12, 47);
return 0;
}
最后,我得到一个在函数_main templateClass中引用的未解决的错误外部符号“ public:__thiscall templateClass :: templateClass(int,int)”(?? 0?$ templateClass @ H @@ QAE @ HH @ Z) ...
您能帮我解释一下什么是错误的,如果将所有内容都放在一个.cpp文件中而不分开,为什么同样有效?