C ++で純粋仮想メソッドを定義する抽象クラスがあります。
class Base
{
Base();
~Base();
virtual bool Test() = 0;
};
これを、A、B、C などと呼ぶ他の多くのクラス (Test() の実装を提供する) でサブクラス化しました。これを使用して、これらの型の配列を作成したいと思います。基本クラス:
int main(int argc, char* argv[])
{
int size = 0;
Base* bases = new Base[10];
bases[size++] = new A();
bases[size++] = new B();
for (int i = 0; i < size; i++)
{
Base* base = bases[i];
base->Test();
}
}
(私が犯した可能性のあるエラーを許してください。簡単な例を提供するために、これをその場で書いています)。
問題は、Base クラスのインスタンスを作成する必要があるため、配列をインスタンス化できないことです (これは抽象的であるため実行できません)。ただし、これを行わないと、配列のインデックスに割り当てるために必要なメモリが割り当てられていないため、そのメモリにアクセスしようとするとセグメンテーション違反が発生します。私は、new と delete を malloc と free と混ぜて使うのは良い習慣ではないという印象を受けています。
これを使用する方法を混乱させた可能性があり、テンプレートまたはその他のメカニズムを使用してこれを行う必要がありますが、何をしようとしているのかを説明するのに十分な情報を提供できれば幸いです.
では、これを行う最善の方法は何ですか?抽象クラスにメモリを割り当てるというこの問題をどのように回避できますか?
ありがとう、ダン