我知道我可以像这样在派生类中初始化基类的向量:
#include <vector>
#include <utility>
public:
Base(std::vector<std::pair<int, int> > vec);
~Base();
private:
std::vector<std::pair<int, int> > vec_;
Base::Base(std::vector<std::pair<int, int> > vec) : vec_(vec)
{
}
Dervied::Derived : Base({{0, 0}, {1, 1}})
{
}
但是还有一种方法可以在孩子中初始化该基类的向量vec_吗?
#include <vector>
#include <utility>
public:
Base();
~Base();
private:
std::vector<std::pair<int, int> > vec_;
Base::Base()
{
}
类似这样:
Derived::Derived : Base(vec_({{0, 0}, {1, 1}}))
或者这在C ++中根本不可能吗?
答案 0 :(得分:2)
vec_
是private
。因此,在派生类中无法访问它。如果需要在派生类中访问它,可以将其设置为protected
。
就目前的类而言,您只能通过基类构造函数修改vec_
。
如果派生类还可以使用其他一些基类方法修改了vec_
,则可以使用它们来更改vec_
。