【问题标题】:Abstract classes and Pointers抽象类和指针
【发布时间】:2012-12-03 23:21:18
【问题描述】:

我有课

// 我想要一个抽象类。

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

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

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

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

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

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

有什么模式或什么可以帮助我。 使用 java,它是所有引用,是的,它是可行的。

谢谢。

【问题讨论】:

    标签: c++ class pointers polymorphism virtual


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      你不应该使用原始指针

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

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

      【讨论】:

        猜你喜欢
        • 2017-11-08
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多