如何在g++中使用 template class ?
不太熟悉g++,不知道如何使用template class,读大家帮忙,谢谢 !
首先我用了三个文件a.h\a.cpp\main.cpp,如下
//////////// a.h ///////////////////
template<typename T>
class X
{
public:
X();
int a;
};
//////////////// a.cpp ////////////////
#include "a.h"
template<typename T>
X<T>::X()
{
a=0;
}
////////////// main.cpp ////////////////////
#include <iostream>
#include "a.h"
X<int> x;
int main()
{
return 0;
}
我的编译这样的: g++ -o main a.cpp main.cpp
然后出现了这样的错误提示:
/tmp/ccqG1Evq.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x50): undefined reference to `X<int>::X()'
不知道是什么原因,希望大家可以解释一下,谢谢 !
[解决办法]
模板不支持分离编译,声明定义全写头文件里吧。
[解决办法]
实现写到头文件中