Привет всем.
Возникла задача создания шаблона, который будет реализовывать множественное наследование от некоторого набора интерфейсов/классов.
Накатал следующий класс:
template<class T1,class T2,class T3=t_dummy,class T4=t_dummy,class T5=t_dummy>
class t_aggregator:public T1,
public T2,
public T3,
public T4,
public T5
{};
При использовании, получаю ошибку:
Ошибка 1 error C2500: structure::t_aggregator<T1,T2>: 'structure::t_dummy' уже является прямым базовым классом d:\Users\Dima\Work\lib\structure\t_aggregator.h 17
OK. Пробую так:
template<class T1,class T2>
class t_aggregator:public T1,
public T2
{};
template<class T1,class T2,class T3>
class t_aggregator:public T1,
public T2,
public T3
{};
Получаю ошибку (для второго шаблона)
Ошибка 1 error C2977: structure::t_aggregator: слишком много аргументов шаблон d:\Users\Dima\Work\lib\structure\t_aggregator.h 23
Вопрос — как эту задачу лучше всего решить:
— завести кучу t_dummy_1, t_dummy_2 ... t_dummy_N
— сделать уникальным имя агрегатора (по количеству аргументов) — t_aggregator_2, t_aggregator_3 ...
— оставить только агрегратор с двумя параметрами, и рекрусивно через него все прокручивать: t_aggregator<T1,t_aggregator<T2,t_aggregator<T3,T4> > >
— что-то еще?
Собственно вопрос задаю, чтобы свести мысли в кучу — сам сейчас склоняюсь ко второму варианту
-- Пользователи не приняли программу. Всех пришлось уничтожить. --