簡體   English   中英

如何在派生構造函數中初始化從基類繼承的向量

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

我知道我可以像這樣在派生的基類的iniatlize:

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}})
{
}

但是,還有一種方法可以將孩子中這個基類的向量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 因此,在派生類中無法訪問它。 如果需要在派生類中訪問它,可以使其protected

由於您的課程目前處於站立狀態,因此您只能通過基類構造函數修改vec_

如果有一些其他基類方法可以被修改vec_的派生類訪問,那么你可以使用它們來改變vec_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM