複数のクラスのインスタンスをベクトルに格納したいと考えています。すべてのクラスが同じ基本クラスから継承するため、これは可能です。
このプログラムを想像してください:
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
virtual void identify ()
{
cout << "BASE" << endl;
}
};
class Derived: public Base
{
public:
virtual void identify ()
{
cout << "DERIVED" << endl;
}
};
int main ()
{
Derived derived;
vector<Base> vect;
vect.push_back(derived);
vect[0].identify();
return 0;
}
「identify」メソッドは仮想であるため、「DERIVED」と出力されると予想していました。代わりに、「vect[0]」は「ベース」インスタンスのようで、出力されます
ベース
これを行うことができる独自のコンテナ(おそらくベクトルから派生)を何らかの方法で作成できると思います(おそらくポインタのみを保持しています...)。これを行うためのよりC ++っぽい方法があるかどうかを尋ねたかっただけです。そして、私は完全にベクトル互換になりたいです (他のユーザーが私のコードを使用する場合の便宜のため)。