Привет всем!
Возникла проблема. Проиллюстрирую ее на следующем примере:class Base
{
public:
Base() {}
virtual ~Base() {}
private:
Child m_p;
};
class Child : public Base
{
public:
Child() {}
virtual ~Child() {}
};
Сборка обламывается со следующим сообщением об ошибке: ‘Child’ does not name a type
Т.е. при явном использовании дочернего класса в родительском, компилятор требует объявления класса "Child" перед классом "Base", что в принципе и логично! Но класс "Child" является дочерним классом класса "Base", что в свою очередь требует объявления класса "Base" перед классом "Child"!
Предобъявление класса "Child" (class Child;) перед "Base" естественно не является решением, т.к. использование класса "Child" явное. Получается какая то рекурсия...
В принципе, я немного изменил архитектуру проекта избавившись от данной иерархии наследования, но возникшая проблема не дает мне покоя...
У кого какие будут предложения по решению этого вопроса? Или данная проблема фундаментальна?
Компилятор g++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3)