gpt4 book ai didi

c++ - 在另一个类对象中初始化一个对象。(在对该构造函数执行一些操作之后。)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:57 25 4
gpt4 key购买 nike

我想初始化一个类成员,它也是另一个类对象。问题是,我必须用我在构造函数上执行一些操作后找出的变量来初始化该成员。让我展示示例代码。

class Child_class
{
private:
int var1, var2, var3;

public:
DateTime(int var1 = 1970, int var2 = 1, int var3 = 1);

};

第二类:

class Owner_class
{
private:

Child_class foo;

public:
// I have to make some string split operations on string_var variable
// and get some new variables.After that, I need to initialize child_class with new variables
Owner_class( string string_var, int test);
}

一种方法,我知道我可以写:

Owner_class::Owner_class():
Child_class(new_var1,new_var2,new_var3) {
// but since I'll find new_var1,new_var2 and new_var3 here.I couldnt use this method.
// Am I right ?
}

有没有人可以帮助我?提前致谢!

最佳答案

您可以编写一个函数来为您进行计算并返回一个 Child_class 对象,并使用它在 Owner_class 构造函数初始化列表中初始化您的实例:

Child_class make_child_object(string string_var, int test)
{
// do stuff, instantiate Child_class object, return it
}

然后

Owner_class(string s, int n) : foo(make_child_object(s, n) {}

如果这个方法不合适,那么一个替代方案是给 Child_class 一个默认构造函数,并在 Owner_class 构造函数体中给它赋值:

Owner_class(string s, int n) 
{
// foo has been default constructed by the time you gethere.
// Do your stuff to calculate arguments of Child_class constructor.
....
// construct a Child_class instance and assign it to foo
foo = Child_class(a, b, c);
}

关于c++ - 在另一个类对象中初始化一个对象。(在对该构造函数执行一些操作之后。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com