問題を次のサンプルコードに減らしました。
class Charizard { //truck
trainer &myTrainer;
public:
Charizard(trainer &tMyTrainer);
};
class trainer {
Charizard myPokemon;
public:
trainer();
};
Charizard::Charizard(trainer &tMyTrainer) : myTrainer(tMyTrainer) {}
パブリックメンバーを変更または追加せずに、トレーナーのコンストラクターを作成するにはどうすればよいですか。初期化リストにmyPokemonが作成されると、「myTrainer」は作成中のトレーナーを指すようになります。
これが私が試したことです:
trainer::trainer() : myPokemon(this) {}
しかしもちろん、「これ」は正しいタイプではありません。Charizardコンストラクターが取り込むもの(パブリックメンバー)を変更できないため、どうすればよいかわかりません。何か案は?
注:タイトルには作業が必要な場合があります。