我想为模板的专业化添加额外的转化运算符
- 一个特殊化可以从其主模板继承所有方法吗?
template<class T>
MyClass
{
public:
operator Foo() { return(getAFoo()); }
};
template<>
MyClass<Bar>
{
public:
// desire to ADD a method to a specialization yet inherit
// all methods from the main template it specializes ???
operator Bar() { return(getABar()); }
};
答案 0 :(得分:4)
模板特化是不同的类型,因此不共享功能。
您可以通过继承公共基类来获得共享功能:
template<class T>
struct Base {
operator Foo() { return Foo(); }
};
template<class T>
struct C : Base<T> {
// ...
};
template<>
struct C<Bar> : Base<Bar> {
// ...
operator Bar() { return Bar(); }
};