我有一个模板类:
template<typename T>
class A {
public:
virtual void func(T t);
virtual void func2(T t);
.
.
.
virtual void funcN(T t);
}
Run Code Online (Sandbox Code Playgroud)
基本上很多类继承形式A,但T总是B或C两种类型之一.
目前,我在课堂上所做的每一项更改都会导致很长的构建.
由于T可以是B或C,我想将类转换为常规类.
任何想法如何以智能和干净的方式进行更改,而无需复制每个功能两次?
谢谢
最简单的解决方案可能是使用显式特化.保留模板,但是您明确地告诉编译器要实例化哪些类.
更改您的头文件class A
包含仅包含类及其成员的声明(就像您对常规类所做的那样).然后创建一个文件A.cpp
,其中包含成员函数A
和显式特化的实现,如下所示
#include <A.h>
#include <B.h>
#include <C.h>
//... Implementation of A
template class A<B>; // explicit instantiation for B
template class A<C>; // and for C
Run Code Online (Sandbox Code Playgroud)
并将此文件添加到您的项目中.
归档时间: |
|
查看次数: |
107 次 |
最近记录: |