Chinaunix首页 | 论坛 | 博客
  • 博客访问: 501444
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: C/C++

2009-10-12 17:55:55

正确编译模板类的方法:
1、因为模板实例化需要看到模板的定义,而不仅仅是声明。所以模板类的定义全部放在头文件中。这种叫做包含编译模型(见C++PRIMER p543)。
当然,可以在头文件中的最后包含源文件,这样可使得定义和声明分开。不过工程中就不能添加这个.cpp了,因为这个.cpp编译通不过。其实就是在头文件的最后include进去就可以了。
2、分开头文件和源文件,在main中包含源文件
3、使用分别编译模型,export关键字目前VC不支持。
综上所述,没有一种方法是可以和通常的接口和实现分开一致的,无论如何,不能编译模板的obj来让编译器链接,也就是说,编译器需要看到实现的源代码。
第1种方法貌似比较好,但是这样Makefie就不能将模板的.cpp实现文件当做依赖文件。
所以还是用第2种方法。
没有必要刻意追求模板的接口问题。因为本来这就是一个不可能的目标。
阅读(1951) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~