抽象类和指针

时间:2012-12-16 18:47:25

标签: c++ class pointers polymorphism virtual

我有一个班级

//我想要一个抽象类。

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

//我想在整个程序中使用这个抽象的calss来享受多态性。

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

我得到一个编译时错误,抽象类​​无法实例化。

是的,但我真的想要或者我想学习:

如何让其他程序员“必须 - 必须”实现一些功能,我不想在我的程序中使用指针。 [我不知道为什么 ?但我有那种直觉......]

是否有一些模式或某些东西可以帮助我。 使用java它是所有引用,并且是可行的。

感谢。

2 个答案:

答案 0 :(得分:2)

如果您想要容器项的多态行为,您别无选择,只能使用指针。为了让您的生活尽可能轻松,您应该使用智能指针,例如shared_ptr<Foo>

答案 1 :(得分:0)

你的直觉是正确的......部分......

您不应该使用原始指针

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

C ++中没有办法拥有抽象对象的集合。