class IDontControl
{
class Nested
{
Nested(int i);
};
};
Eu precisava de uma referência direta como:
class IDontControl::Nested; // But this doesn't work.
Minha solução alternativa foi:
class IDontControl_Nested; // Forward reference to distinct name.
Mais tarde, quando eu poderia usar a definição completa:
#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) { }
};
Essa técnica provavelmente seria mais problemática do que vale a pena se houvesse construtores complicados ou outras funções especiais de membros que não fossem herdadas sem problemas. Eu poderia imaginar certas mágicas reagindo mal.
Mas, no meu caso muito simples, parece funcionar.