一个关于模板的错误!
一个模板类:
template <typename Type>
class CPoint
{
public:
CPoint()//这里三个函数都是内定义的!
{}
CPoint(const Type lp, const Type rp)
{
x = lp;
y = rp;
}
~CPoint()
{}
CPoint getpoint();
private:
Type x;
Type y;
};
另一个模板类
template <typename Type>
class CRun
{
public:
CRun(){};
~CRun(){};
private:
Type point;
};
int _tmain(int argc, _TCHAR* argv[])
{
CRun <CPoint <int> > run;//没有错误!
return 0;
}
但是我把
CPoint()//这里三个函数都是内定义的!
{}
CPoint(const Type lp, const Type rp)
{
x = lp;
y = rp;
}
~CPoint()
{}
在.cpp中定义时却发在主函数中发生错误!为什么呢?
[解决办法]
google 模板分离编译模式
[解决办法]
放在一起,不要分开...
[解决办法]
我认为是,现代编译器还不支持模板的定义与实现分离编译(貌似有个export关键字可以实现?记不清了).
[解决办法]
回去看看PRIMER,里面讲的很清楚的
[解决办法]
两种模板编译模式,包含模式和分离模式,
都适用于类模板的成员函数和静态数据成员的定义。
分离模式时的声明例如:
// ----- Queue.h -----
// 声明 Queue 是一个可导出的 (exported) 类模板
export template <class Type>
// ...
编译是否通过,还要看编译器对模板编译模式是否支持?
[解决办法]
模板的定义和实现放在一个文件内
[解决办法]
好像前面要加个关键字说明 什么的?