我有一个班级
//我想要一个抽象类。
class Foo
{
public:
virtual void bar()=0;
};
//我想在整个程序中使用这个抽象的calss来享受多态性。
class EatFoo
{
public:
vector<Foo> fooV; // not working
vector<Foo *> fooPV;
};
我得到一个编译时错误,抽象类无法实例化。
是的,但我真的想要或者我想学习:
如何让其他程序员“必须 - 必须”实现一些功能,我不想在我的程序中使用指针。 [我不知道为什么 ?但我有那种直觉......]
是否有一些模式或某些东西可以帮助我。 使用java它是所有引用,并且是可行的。
感谢。
答案 0 :(得分:2)
如果您想要容器项的多态行为,您别无选择,只能使用指针。为了让您的生活尽可能轻松,您应该使用智能指针,例如shared_ptr<Foo>
。
答案 1 :(得分:0)
你的直觉是正确的......部分......
您不应该使用原始指针:
class EatFoo
{
public:
vector<shared_ptr<Foo> > fooV;
};
C ++中没有办法拥有抽象对象的集合。