>>57>>58>>59>>60
たぶんまだ正解ではないんだろうなという雰囲気が伝わってきたので、再考。
まず、>>58氏の#pragma onceを試して、もう一度soccergame.hをfieldplayercontrol.hにインクルードしてみたがやはり同じバグが発生。
でも、#pragma onceなら1行で、しかも同じ書き方でインクルードガードできるから便利。(感謝!、絞り込みも活用します。)
次に昨日書いた循環参照について。
soccergame.hをfieldplayercontrol.hにインクルードした時、soccergame.hの中では、FieldPlayerControlクラス型の実体を定義してるけど、
fieldplayercontrol.hの中でSoccerGameクラス型の実体を定義してはいないから、循環参照ではなかったかもしれないという気がしてきた。
お互いをインクルードしあってるだけでは循環参照に必ずしもなるとはいえないかもしれない。自信はないけど。
そこで、soccergame.hをfieldplayercontrol.hにインクルードした時のfieldplayercontrol.hの中身はどうなっているのかソースにして追いかけてみようとふと思った。
ひとつ気になった。
soccergame.hはその中で#include"fieldplayercontrol.h" してるので、soccergame.hをfieldplayercontrol.hにインクルードしたら、
fieldplayercontrol.h の中で #include"fieldplayercontrol.h"されるのだろうか?
なぜなら、もともとのfieldplayercontrol.hは、#include"fieldplayercontrol.h"なんてしてないから、インクルードガードされないんじゃないかなと思ったので。