J'ai réduit le problème à l'exemple de code suivant:Pass « ce » objet à une liste d'initialisation
class Charizard { //truck
trainer &myTrainer;
public:
Charizard(trainer &tMyTrainer);
};
class trainer {
Charizard myPokemon;
public:
trainer();
};
Charizard::Charizard(trainer &tMyTrainer) : myTrainer(tMyTrainer) {}
Sans modifier ou d'ajouter des membres du public, comment puis-je créer le constructeur de formateur, de sorte que Lorsque myPokemon est créé dans la liste d'initialisation, le "myTrainer" pointe-t-il vers le formateur en cours de création?
Voici ce que j'ai essayé:
trainer::trainer() : myPokemon(this) {}
Mais bien sûr "ce" n'est pas le bon type. Je ne peux pas changer ce que le constructeur de Charizard accepte (c'est un membre public), donc je ne sais pas quoi faire. Des idées?
Note: Le titre pourrait nécessiter un peu de travail.
C'est exactement ce que je cherchais, et merci pour l'avertissement. – Coltin