class IDontControl
{
class Nested
{
Nested(int i);
};
};
Мне нужна была прямая ссылка, как:
class IDontControl::Nested; // But this doesn't work.
Мой обходной путь был:
class IDontControl_Nested; // Forward reference to distinct name.
Позже, когда я смог использовать полное определение:
#include <idontcontrol.h>
// I defined the forward ref like this:
class IDontControl_Nested : public IDontControl::Nested
{
// Needed to make a forwarding constructor here
IDontControl_Nested(int i) : Nested(i) { }
};
Этот метод, вероятно, принесет больше хлопот, чем стоит, если бы существовали сложные конструкторы или другие специальные функции-члены, которые не были унаследованы гладко. Я мог вообразить некую магию шаблона, плохо реагирующую.
Но в моем очень простом случае это похоже на работу.