【发布时间】:2016-10-14 03:14:47
【问题描述】:
一个类的特殊版本是否可以共享原始模板类的部分或全部功能?
即考虑有一个模板类,
template <typename T>
class A
{
A()
{}
A(const A& ref)
{}
void f1()
{
//do something
}
void f2()
{
//do something
}
void f3()
{
//do something
}
}
它有一个针对特定数据类型的专用版本,除了原始的通用功能之外,它只打算在通用版本中添加一些附加功能。
template<>
class A<int>
{
void f4()
{
//do something
}
}
现在我特别想要的是,这个专用版本可以共享其通用版本中的所有内容,包括构造函数(如果可能)。
【问题讨论】:
-
也许继承在这里是更好的选择?
-
不,不可能如你所愿。请记住这一点:每个模板特化都是一个单独的类定义,具有不同的类型(因此名称(对于编译器,无论它们在您看来是否具有相同的名称。
-
如果您不知道,可以专门化类模板的各个功能,而无需专门化整个类。
标签: c++ c++11 templates visual-c++ template-specialization