Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346990
  • 博文数量: 88
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-06 15:48
个人简介

喜欢美食, 旅行..

文章分类

全部博文(88)

文章存档

2014年(2)

2013年(12)

2012年(14)

2010年(8)

2009年(52)

我的朋友

分类: C/C++

2009-12-25 22:02:25

C++模板类的分离模式

     一般类的定义和实现组织方式:将定义放在.h文件中,实现放在.cpp文件中。

     C++中的模板是C++在发展过程中新添的新生力量,template的声明和实现不同于一般的类定义与实现和函数的声明与定义,故在含有模板的C++程序的组织方式就不同于一般的定义与实现相分离的方式。

      我曾经遇到的问题:  当在GUN中编译时老是无法通过,错误信息大概是无法找到函数。然后将程序搬到VC6下编译,同样出现连接错误。

      问题原因:

      C++标准中说明:在使用模板时C++支持两种程序组织方式:包含模式与分离模式。包含模式也就是将类的定义与实现同放在.h 文件中,分离模式也就是将定义与实现分离,也就是我采用的方式。但很多编译器不支持分离模式,只支持包含模式。

    通常采用的解决方法:

    1. 干脆直接使用包含模式,即将模板类的定义与实现同写在.h文件中。(我不太喜欢这种写法)

    2. 使用分离模式,但是在使用时不引用模板类的头文件,而是引用模板类的实现文件。(不太符合一般习惯)

    3. 使用分离模式,在模板类头文件中引用实现文件。(这个方法我在VC6和Dev C++下都没有成功,不知道是哪里出了问题)

    4. 使用分离模式,在模板类中头文件中实例化一个你需要对象。(十分笨拙的方法,不利于使用)

    5. 使用分离模式,但是另外定义.h文件,在这个文件中引用模板的头文件和实现文件,在使用时引用这个另外定义的.h文件。(觉得这个方法还不错,不过也不知道有什么缺点)

 

文章出自:http://lhg803.javaeye.com/blog/476367

阅读(1236) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~