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