1

クラスがあります

//抽象クラスが必要です。

class Foo
{
    public:
    virtual void bar()=0;
};

//この抽象的なcalsをプログラム全体で使用して、ポリモーフィズムを楽しんでもらいたいです:)。

class EatFoo
{
public:
    vector<Foo> fooV; // not working
    vector<Foo *> fooPV;
};

抽象クラスをインスタンス化できないというコンパイル時エラーが発生します。

はい、その通りですが、私は本当に欲しい、または学びたいです:

他のプログラマーに「しなければならない」ようにする方法は、いくつかの関数を実装する必要があり、プログラムでポインターを使用したくありません。[何故かはわからない ?しかし、私はその腸の感覚を持っています..]

私を助けることができるいくつかのパターンまたは何かがありますか?javaの場合、それはすべての参照であり、うん、それは実行可能です。

ありがとう。

4

2 に答える 2

2

コンテナアイテムのポリモーフィックな動作が必要な場合は、ポインタを使用する以外に選択肢はありません。生活をできるだけ楽にするために、などのスマートポインタを使用する必要がありますshared_ptr<Foo>

于 2012-12-16T18:49:54.520 に答える
0

あなたの腸は正しいです...部分的に...

生のポインタを使用しないでください:

class EatFoo
{
public:
    vector<shared_ptr<Foo> > fooV;
};

C ++には、抽象オブジェクトのコレクションを持つ方法はありません。

于 2012-12-16T18:50:22.347 に答える