C ++ 11 рекурсивные шаблоны

Я хочу добиться следующего поведения.
В базовом классе я хочу иметь контейнер для хранения указателей на методы производного класса. (Я хочу хранить там h1 и h2).
Базовый класс также реализует методы, позволяющие хранить эти указатели и сам контейнер

Пока еще нет готового кода, потому что мне интересно, возможно ли это вообще — например:

template<typename E, typename S>
using Map = std::unordered_map<E, std::function<S* (S&, void)>>;

template<typename E, typename S>
class Base {
someFunctToPutPointersIntoMap() {}
Map<E, S> mEventMap;
}

template<typename E, typename S>
class Derived: public Base<E, S> {

public:
Derived* h1(void) {};
Derived* h2(void) {};

};

Однако как тогда я могу объявить объект производного класса? Для меня его параметры являются рекурсивными, например.

Derived<E, Derived<E, Derived<E, Derived<E, ...etc... > object;

Так что это никогда не скомпилируется. Я уверен, что есть какой-то способ справиться с этим, однако я понятия не имею.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]