| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2229 人关注过本帖
标题:模板实例化问题(读书笔记)
只看楼主 加入收藏
Lonelie
Rank: 1
来 自:xmu
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-12-13
收藏
 问题点数:0 回复次数:0 
模板实例化问题(读书笔记)
模板实例化笔记:

  与通常的类成员函数相比,模板成员函数的实现方式略有不同。类模板成员函数的定义和实现
必须放在同一个头文件里。考虑若下代码:
//b.h
template<class>
class b
{
public:
   b();
   ~b();
};

//b.cpp
#include "b.h"
template <class t>
b<t>::b(){}
template<class t>
b<t>::b(){}

//main.cpp
#include "b.h"
void main()
{
   b<int> bi;
   b<float> bf;
}

   在编译b.cpp的时候,编译器是既有定义,又有声明。此时编译器并不需要为模板类生成任何定义,
因为还不存在实例。而当编译器编译main.cpp时,有了两个实例:模板类b<int>和b<float>。此时
编译器只有声明而没有定义!!!
   解决办法:
      1.将b.cpp 与b.h合在一起,只写在有文件b.h中
      2.在b.h中,后再另外添加
   "templateinstantiations.cpp"文件,对所有要用到的模板实例进行显式声明,这样所有的实例化过程都叫个了
   这个文件;
   //templateinstantiations.cpp
   #include "b.cpp"
   template class b<int>;
   template class b<float>;
   //end file
搜索更多相关主题的帖子: 模板实例 笔记 cpp class 定义 
2007-12-23 15:03
快速回复:模板实例化问题(读书笔记)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.010498 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved