子类作为特化 - 即:在特化中添加一个方法

时间:2010-02-15 03:00:09

标签: c++ templates

我想为模板的专业化添加额外的转化运算符

- 一个特殊化可以从其主模板继承所有方法吗?

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()); } 
};

1 个答案:

答案 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(); }
};