如何在派生构造函数中初始化从基 class 继承的向量

How to initalize a vector inherited from base class in derived constructor

我知道我可以像这样在派生中初始化基 class 的向量:

Base.h

#include <vector>
#include <utility>

public:
  Base(std::vector<std::pair<int, int> > vec);
  ~Base();
private:
  std::vector<std::pair<int, int> > vec_;

Base.cpp

Base::Base(std::vector<std::pair<int, int> > vec) : vec_(vec)
{
}

Derived.cpp

Dervied::Derived : Base({{0, 0}, {1, 1}})
{
}

但是有没有办法在child中初始化这个基数class的向量vec_?

Base.h

#include <vector>
#include <utility>

public:
  Base();
  ~Base();
private:
  std::vector<std::pair<int, int> > vec_;

Base.cpp

Base::Base()
{
}

所以像这样:

Derived::Derived : Base(vec_({{0, 0}, {1, 1}}))

或者这在 C++ 中根本不可能吗?

vec_private。因此,它在派生 class 中不可访问。如果您需要在派生的 class.

中访问它,您可以将其设置为 protected

就目前的 class 而言,您只能通过基础 class 构造函数修改 vec_

如果有一些其他基础 class 方法可用于修改 vec_ 的派生 class,那么您可以使用它们来更改 vec_.