c++ - 抽象类中的 vector

标签 c++ vector

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

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

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

最佳答案

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

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

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/

相关文章:

c++ - 在 librdkafka 中,dr_cb 在 produce() 线程或 poll() 线程上执行

c++ - QTextEdit 和自定义滚动 - PageDown/PageUp

c++ - QMutex:销毁锁定的互斥体

c++ - std::condition_variable::wait()是POSIX线程取消点吗?

c++ - 如何在 C++ 中的二维 vector 中查找 vector ?

c++ - 托管 DirectX 作为起点

C++ std::push_heap 破坏堆/不尊重比较器

loops - 如何以函数式风格迭代二维向量?

c++ - 将代码从 map<char, T> 重构为 vector<T>

c++ - 无法使用迭代器读取类对象 vector 中的 vector