class IDontControl
{
class Nested
{
Nested(int i);
};
};
J'avais besoin d'une référence avant comme :
class IDontControl::Nested; // But this doesn't work.
Ma solution de rechange était :
class IDontControl_Nested; // Forward reference to distinct name.
Plus tard, quand je pourrais utiliser la définition complète :
#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) { }
};
Cette technique poserait probablement plus de problèmes qu'elle n'en vaut la peine s'il y avait des constructeurs compliqués ou d'autres fonctions membres spéciales qui n'étaient pas héritées sans problème. Je pourrais imaginer que certains modèles magiques réagissent mal.
Mais dans mon cas très simple, cela semble fonctionner.
6 votes
Pourquoi avez-vous besoin de cela ? Notez que vous pouvez déclarer en avant si c'est un membre de la même classe que celle qui est définie : class X { class Y ; Y *a ; } ; class X::Y { } ;
1 votes
Cette solution a fonctionné pour moi (namespace C { class D ; } ;): stackoverflow.com/questions/22389784/
0 votes
J'ai trouvé une solution enlace