私は学習中に小さなプロジェクトを開始しました。基本的に、私がしようとしているのは、私が新しいものを学ぶときに構築しようとしている小さな「ゲーム」です。サブクラスオブジェクトを格納できるスーパークラス型のベクトルを作成する
ここに簡単な説明と私の問題があります。
基本的に、選手の選択に基づいてさまざまなヒーロータイプをプレーヤに割り当てたいと思います。
これまでHPパラメータのみで基本クラス「Hero」を作成しました。その後、私はHero、HeroType1、HeroType2の2つの派生クラスを作成しました。これらのクラスは特定の能力を持ちます。
std::vector<Hero*> Heroes
にさまざまなヒーロータイプを保存することを決めました。基本的には、initializeHeroes関数を呼び出すことで "ゲーム"を開始します。これは、プレイヤーの選択に応じて、NewHero1またはNewHero2型の新しいオブジェクトを作成し、前述のベクトルを格納します。つまり、これまでに何を試しても、派生メンバー関数を後で使いたいときにはアクセスできず、Heroクラスのものにしかアクセスできません。
グローバル変数player1、player2を宣言し、プレイヤーがHeroTypeを選択した後に割り当てることをお勧めします。しかし、コンパイルする前にデータ型を知っていなければならないので、これを行うことはできません。申し訳ありませんが、これは愚かで基本的な質問である場合、私の知識はまだ非常に限られていると私はここでいくつかのヒントを求めている理由です。
私はこれにどのようにアプローチすればよいか質問したいと思いますが、それは非常に単純な問題ですが、私はまだ初心者であり、これを解決する最善の方法を見つけようとしています。前もって感謝します。
解決策の1つとして、訪問者パターンを参照します。それ以外は、あなたの質問は、SOの質問形式によく合いません。 – StoryTeller