2
4

2 に答える 2

3

問題は、 をgetParent()返すことですBaseNode*。これは、 の任意の型へのポインタである可能性があります。BaseNodeまた、 から派生した無関係なクラスを指す可能性がありますBaseNode。親が type でなければならないことが 100% 確実な場合はMatch、親を最初にキャストしてから、Match*それを呼び出すことができますgetPlayer()

Player* Set::getPlayer1() const{
    return dynamic_cast<Match*>(getParent())->getPlayer1();
}

親が必要でない場合はMatchNULLdynamic_castを返す可能性があるため、必ず確認してください。

于 2008-12-04T18:59:11.717 に答える
1

階層とメソッド名を本当に再編成する必要があると思います...これはあなたの質問とは関係ありませんが、一般的に Set が Match から継承される理由を理解するのは難しいようです。(試合にセットはありませんか?)

ゲームはポイントで構成され、セットはゲームで構成され、試合はセットで構成されます...ポイントはプレーヤーが獲得します。

おそらく、より現実世界に近い構造にする必要があります。

ちょうど私の $.02

編集

おそらく、セットのマップ (セット 1、2、3 など) と、Player1() と player2() ではなくメソッド Player(int) を含む Match オブジェクトが必要です。また、Set クラスに player のメソッドを用意する必要もないようです。セットは、それがプレイされている試合を指します。

于 2008-12-04T19:13:50.863 に答える