[英]Explicitly initalize abstract base class constructor with value determined by parameter of derived class constructor
[英]How to initalize a vector inherited from base class in derived constructor
我知道我可以像這樣在派生的基類的iniatlize:
#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 ++中根本不可能?
vec_
是private
。 因此,在派生類中無法訪問它。 如果需要在派生類中訪問它,可以使其protected
。
由於您的課程目前處於站立狀態,因此您只能通過基類構造函數修改vec_
。
如果有一些其他基類方法可以被修改vec_
的派生類訪問,那么你可以使用它們來改變vec_
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.