Comment puis-je mettre en œuvre des classes mutuellement récursives en C ++? Quelque chose comme:
4 Réponses :
Utilisez la déclaration à terme.
class Class2;
class Class1
{
Class2* Class2_ptr;
};
class Class2
{
Class1* Class1_ptr;
}
Prédeclare l'une des classes, par exemple CLASS2 CODE> #ifndef RECURSION_H_
#define RECURSION_H_
class Class2;
class Class1
{
Class2* Class2_ptr;
public:
void Class1_method()
{
//...
(*Class2_ptr).Class2_method();
//...
}
};
class Class2
{
// ...
}
avancement déclarer l'une des classes (ou les deux) sur le dessus, par exemple.:
class Class1
{
...
void Class1_method(); // just declare
...
};
class Class2
{
...
};
// once definition of Class2 is known, we can define the method of Class1
void Class1::Class1_method()
{
//...
(*Class2_ptr).Class2_method();
//...
}
Que veux-tu dire? Comment pouvez-vous définir les classes sans définir les méthodes?
class Class1;
class Class2;
class Class1
{
Class2* Class2_ptr;
public:
void Class1_method();
};
class Class2
{
Class1* Class1_ptr;
public:
void Class2_method();
};
void Class1::Class1_method()
{
//...
(*Class2_ptr).Class2_method();
//...
}
void Class2::Class2_method()
{
//...
(*Class1_ptr).Class1_method();
//...
}
Vous oubliez de mettre la déclaration à terme, mais cette réponse a toujours le code qui est le plus clair pour moi.
@drenami: ack! Désolé, je l'avais dans mon code de test, mais goofed dans la coupe et la pâte. Je le réparerai...
Avez-vous une objection à l'opérateur
-> code>?En fait je fais. Mon chemin est plus simple pour moi.