我相信问题here是相似的,但是我仍然需要对其进行更多说明。

假设我在抽象类(用于存储另一个类的对象)中创建了一个向量。如果无法初始化抽象类的对象,我如何能从另一个类使用.pushback()?

显然,最简单的解决方案是将向量放在另一个类中,但我需要另一种方式。我读过您可以通过将指向这些对象的指针存储在向量中来做到这一点。但是有人可以给我一个例子吗?

最佳答案

抽象类的目的是提供一个接口,然后在具体的派生类中实现该接口。

如果要将项目推到作为抽象类的数据成员的向量上,则创建一个适当的派生类,然后可以创建该派生类的实例,该实例将因此包含一个可以向其添加条目的向量。

class Base{
public:
  virtual void do_stuff()=0; // this is an abstract base class
protected:
  std::vector<int> data;
};

class Derived: public Base
{
public:
  void do_stuff() {
    // concrete implementation
    data.push_back(42); // can add values to vector inherited from base class
  }
};

int main()
{
  Derived d;
  d.do_stuff(); // will add entries to d.data
}


但是,我想知道这是否真的是您要实现的目标。

关于c++ - 抽象类中的 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59245703/

10-12 15:05