如何在派生构造函数中初始化从基 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_
.
我知道我可以像这样在派生中初始化基 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_
.