Я мастерить с C++ и сталкиваются со следующей проблемой:Шаблон друга иерархии классов наследования
Дано:
class A {
int aVar;
public:
A(){}
virtual ~A(){};
};
template<class BASE>
class B: public BASE {
int bVar;
public:
B() : BASE() {}
virtual ~B() {}
};
template<class BASE>
class C: public BASE{
int cVar;
public:
C() : BASE() {}
virtual ~C() {}
}
D,E,F,G...
я могу сделать что-то вроде разветвленной иерархии классов, который наследует параметры и функции, и такие , Например typedef C<B<A>> ABC;
Однако у меня должен быть класс, который «управляет» некоторыми комбинациями этих объектов через защищенный доступ.
template<class TYPE>
struct Manager {
TYPE current;
Manager() {
current.aVar++;
current.bVar++;
current.cVar++;
}
~Manager(){}
};
И мой вопрос: Как настроить A
, B
и C
классов к другу независимо от диспетчера Manager
«сек типа шаблона? (Например, Manager
с шаблоном ABC
, EABC
, DABC
, XYZEFGABC
...)
[демонстрация] (http://coliru.stacked-crooked.com/a/e8a64d9c057b1d5e) (с исправлениями) – dyp
@dyp Были ли еще исправления, чем изменение 'class' на' struct'? – Barry
В коде OP, ctors являются частными и используют спецификаторы специфицированного типа. (dtors тоже закрыты) – dyp