抽象类和指针(Abstract classes and Pointers)

2019-10-17 12:00发布

我有一个类

//我想一个抽象类。

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

//我想用遍了程序抽象CALSS :)享受多态性。

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

我得到一个编译时错误抽象类不能被实例化。

它是真实的,但我真的想和我想了解:

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

有一些图案或东西,可以帮助我。 与Java它是所有引用和烨它是可行的。

谢谢。

Answer 1:

如果你想对容器项目多态行为,你没有选择,只能使用指针。 为了让您的生活变得尽可能容易,你应该使用智能指针,如shared_ptr<Foo>



Answer 2:

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

你不应该使用原始指针

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

有没有在C ++没有办法让抽象对象的集合。



文章来源: Abstract classes and Pointers