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.