1

我有一堂课

// 我想要一个抽象类。

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

// 我希望在整个程序中都使用这个抽象类 :) 来享受多态性。

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 回答