基本クラス型のポインターの std::vector があります。
vector<Base*> baseList;
そして、派生クラス型をベクターにプッシュします。
Derived* derivedObject = new Derived();
baseList.push_back(derivedObject);
しかし、リストを反復し、派生クラスによって基本クラスからオーバーライドされた関数を呼び出すと、派生クラスのコードは呼び出されません。ベクトルを正しい方法で使用していますか?
私の基本クラスは、その関数を宣言する前に virtual キーワードを使用しており、派生クラスは次のように基本クラスを派生させます。
class Derived : public Base
私がここで間違っていることは何ですか?
編集:
私が宣言した関数を呼び出すには:
typedef vector<App*>::iterator AppIterator;
AppIterator begin() { return l_Apps.begin(); }
AppIterator end() { return l_Apps.end(); }
そして、私は次のように関数を呼び出します:
for (AppIterator it = begin(); it != end(); ++it)
{
(*it)->Initialize();
}
問題はここにありますか?