读书人

一个关于模板的异常

发布时间: 2012-03-16 16:34:56 作者: rapoo

一个关于模板的错误!
一个模板类:
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>

// ...

编译是否通过,还要看编译器对模板编译模式是否支持?
[解决办法]
模板的定义和实现放在一个文件内
[解决办法]
好像前面要加个关键字说明 什么的?

读书人网 >C++

热点推荐