抽象类和指针

Abstract classes and Pointers

本文关键字:指针 抽象类      更新时间:2023-10-16

我有一个类

我想要一个抽象类。

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

我希望这个抽象的小卡在整个程序中使用:)享受多态性。

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

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

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

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

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

谢谢。

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

你的直觉是对的...部分地。。。

不应使用原始指针

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

C++不可能拥有抽象对象的集合。