0

私は、いくつかのプレイヤーカードが知られているものと知られていないものがあるゲームを設計しています。これを行うために、子「OpenPlayer」と「ClosedPlayer」を持つ親オブジェクト「Player」を作成しました。

ゲーム管理を容易にするために、このゲームのすべてのプレーヤーの配列を作成したいと思います。ただし、必要に応じて、OpenPlayerとClosedPlayerの特別なメソッドにもアクセスできるようにしたいと思います。これは可能ですか?

編集:私は実際にSTLからのベクトルを使用することを考えています。これは、プレーヤーの数が変動するため、これがより適切である可能性が高いためです。

4

2 に答える 2

3

一般に、要素が異なるクラスタイプであるC++配列を作成することはできません。各配列要素は同じサイズである必要があり、それは必ずしも異なるサブクラスに当てはまるとは限りません。配列に異なる型を入れると、スライスが発生する可能性があります。これは、サブクラスのデータメンバーが驚くほど消えてしまうことです。

ただし、さまざまなサブクラスへのポインターの配列を作成すると、必要なことを簡単に実行できるようになります。vectorプレーヤーの数が変わる可能性がある場合は、配列の代わりに使用することも検討してください。

于 2012-08-15T01:51:42.553 に答える
0

「特別なメソッドにアクセスする」とは、OpenPlayerだけ、またはClosedPlayerだけのメソッドを意味すると思いますか?

配列とは、STLコレクションを意味すると思います;-)

簡単な答えは「いいえ」です。

長い答えは「はい、できますが、オブジェクトを正しいタイプにキャストする必要があります。これは、デザインが間違っていることを意味します。」です。

別の設計は、「Open」または「Closed」を個々のサブクラスではなく、Playerクラスのプロパティにすることです。

于 2012-08-15T01:53:47.580 に答える