派生クラスが、基底クラス ポインターから呼び出されたときに呼び出される独自のバージョンの関数を持たないという問題が発生しています。クラスをよりよく説明するために、以下のように定義されています
Class Foo
{
public:
Foo();
virtual ~Foo();
virtual void Event();
}
//-----------------------
Class FooBar : public Foo
{
public:
FooBar();
virtual void Update() = 0;
virtual void Draw() = 0;
}
//-----------------------
Class FinalFoo : public FooBar
{
public:
FinalFoo();
void Update();
void Draw();
void Event();
}
に似た他のクラスがありますFinalFoo
。したがって、派生実装を呼び出すことを期待してEvent
、オブジェクトへのポインターを呼び出そうとします。Foo
ただし、基本クラスのバージョンを呼び出しているように見えますが、それだけです
FinalFoo* myThing = new FinalFoo();
Foo* baseThing = myThing;
baseThing->Event(); // I expected this to call FinalFoo::Event()