重複の可能性:
C++ の学習: ポリモーフィズムとスライス
子クラス オブジェクトで初期化されたポリモーフィック ベース クラス オブジェクトの配列
オブジェクト指向クラスを OpenGL アプリケーションに統合しました。基本クラスにはTick
、デルタ時間を表すパラメーターを使用して、ティックごとに (明らかに) 呼び出される関数が呼び出されます。これがどのように見えるかです(この質問に関係のないものは除きます)。
ヘッダー:
class Object
{
public:
virtual void Tick(float DeltaTime);
}
class Controller : public Object
{
public:
virtual void Tick(float DeltaTime);
}
次に、メイン ループ、初期化、および破棄を含むクラスを呼び出しEngine
ます (ウィンドウの作成から分離するため)。
そのクラスでは、ゲーム内のすべてのオブジェクトを追跡する必要があるため、配列を作成しました。
Object* Objects = new Object[10]; // for now max 10 objects
次に、ティック関数を呼び出すために、配列を反復処理しました。
for (unsigned int c = 0; c < 10; c++)
Objects[c].Tick(delta);
ループdelta
の前に計算されます。
問題は、配列内のオブジェクトの 1 つをController
(たとえば) に割り当てると、呼び出される Tick 関数は、Object
実際に格納されているクラスではなく、常に含まれていることです。
型キャストも試しました (各クラスには型を識別するための文字列があります) が、役に立ちませんでした。
答えは明らかなもの (前回の質問に対する答えなど) であると確信していますが、答えが見つかりません。
お時間をいただきありがとうございます。:)