次のようにすると
vector<base*> bases;
その後、オブジェクトでポリモーフィズムを使用できます。Vehicle という基本クラスがあるとします。ポイント A からポイント B に移動するための move() メソッドがあります。
class Vehicule
{
public:
virtual void move(){}
}
次に、Car と Submarine の 2 つの派生クラスがあります。
class Car : public Vehicule
{
public:
void move()
{
checktires();
drive();
}
}
そしてあなたのサブクラス
class Submarine : public Vehicule
{
public:
void move()
{
submersion();
propulsion();
}
}
move メソッドは仮想メソッドであるため、ポリモーフィズムを実行します。これは、同じ関数を呼び出すことを可能にするメカニズムですが、オブジェクトの動的タイプに基づいて異なる動作をすることができます。
その文をできる限り説明しようと思います。Vehicule、Car、Submarine クラスができたので、Vehicule ポインターの配列 (またはベクターのような stl コンテナー) を作成します。
std::vector<Vehicule*> objects;
objects.push_back(new Car());
objects.push_back(new Submarine());
objects[0]->move();
objects[1]->move();
move の最初の呼び出しは、Car メソッドで定義された move メソッドを呼び出します。2 つ目は、Submarine で定義された Move を呼び出します。Vehicule* のベクトルを持っている可能性がありますが、関数を呼び出すと、それが仮想であるため、適切なバージョンを呼び出すことになります。また、関数を 1 つだけ呼び出すと、さまざまな動作が得られます。Vehicle の派生クラスをいくつでも追加できますが、move メソッドを適応させるだけで済みます。
stackoverflow でポリモーフィズムを検索する必要があります。私が書いたものよりもはるかに詳細で正確な回答があります。
間違いをお詫びします。私は英語のネイティブ スピーカーではありません。