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 我不知道你在问什么。 是否不可能初始化向量;使用文件中的数据,如 vector vec(NUMBEROFITEMS,(一些类似 cin 的函数,每次都会处理流并抓取双精度值)) @Kavukamari 你可以用一对迭代器来构造它:vector&lt;double&gt; vec(std::istream_iterator&lt;double&gt;input, std::istream_iterator&lt;double&gt;);

以上是关于c++ 在创建时将构造函数参数从父对象传递给子对象的主要内容,如果未能解决你的问题,请参考以下文章

C++:如何将变量作为参数传递给类构造函数

当我们将对象作为参数传递给方法时,为啥会调用复制构造函数?

将对象作为参数传递给构造函数并将其属性复制到新对象?

从reactjs中的父组件调用并将参数传递给子组件的函数

Web3 + Solidity:将参数传递给合约的构造函数

在编译时将参数传递给主函数