首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于模板的异常

2012-03-16 
一个关于模板的错误!一个模板类:templatetypenameTypeclassCPoint{public:CPoint()//这里三个函数都是内

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

// ...

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

热点排行