c++ 在创建时将构造函数参数从父对象传递给子对象
Posted
技术标签:
【中文标题】c++ 在创建时将构造函数参数从父对象传递给子对象【英文标题】:c++ pass constructor parameter from parent object to child object on creation 【发布时间】:2015-04-26 22:03:28 【问题描述】:这个问题太具体了,我很难找到答案...
有没有办法将父类的构造函数参数自动传递给子类/结构的构造函数?
我想从数据文件中读取行以在创建时填充我的类及其子类,因此我也想将数据文件传递给子类
我的数据结构是这样的:
vector of class Par(ifstream parameter)
membervar
membervar
vector of struct Chld(the same ifstream parameter)
membervar
vector membervar
我希望能够通过调用父级的创建并为其提供数据文件以从中读取信息来构造和填充所有子级和成员
vector<Par> parents(num, Par(datafile));
这将是我理想的创建路线,快速简单,并且我可以立即关闭数据文件,因为我拥有所需的所有信息
这甚至可能吗?不会在孩子中调用默认构造函数吗?本来希望以后不用再回去补所有的空成员,但如果非要,估计也没办法了
【问题讨论】:
如果我理解正确你在做什么,为什么不手动调用所有的构造函数? 短语“父类”和“子类”通常指的是继承。您似乎以非标准的方式使用它们,这会误导很多人。 嗯,你可能是对的,我不知道 【参考方案1】:只是通过它?
class Par
std::vector<Chld> children;
public:
Par(std::ifstream& file)
children.push_back(Chld(file)); // pre-C++11
children.emplace_back(file); // post-C++11
;
【讨论】:
所以我必须使用 push_back?它不会像在初始化 1、2、3、4 等这样的数组时那样创建列表时读取数据 @Kavukamari 我不知道你在问什么。 是否不可能初始化向量;使用文件中的数据,如 vectorvector<double> vec(std::istream_iterator<double>input, std::istream_iterator<double>);
以上是关于c++ 在创建时将构造函数参数从父对象传递给子对象的主要内容,如果未能解决你的问题,请参考以下文章