подкласс как специализация - т.е. добавление метода в специализацию - PullRequest
1 голос
/ 15 февраля 2010

Я хочу добавить дополнительный оператор преобразования в специализацию шаблона

-специализация может наследовать все методы из своего основного шаблона?

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 Ответ

4 голосов
/ 15 февраля 2010

Шаблонные специализации являются различными типами и поэтому не разделяют функции.

Вы можете получить общие функциональные возможности, наследуя от общего базового класса:

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(); }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...