gpt4 book ai didi

c++ - 使用不同的构造函数重新分配对象

转载 作者:行者123 更新时间:2023-11-30 04:04:46 25 4
gpt4 key购买 nike

在类MyClass中,我有一个成员Dialog dialog_

MyClass 的构造函数被调用后,我想使用在 MyClass 的构造函数中创建的参数为 dialog_ 调用一个不同的构造函数构造函数(这就是为什么我不能直接为 dialog_ 调用不同的构造函数,而只能调用默认构造函数的原因)。

所以我试过了

dialog_ = Dialog(/* different constr. w/ parameters passed from MyClass */);

但这行不通。错误是

Error: no operator "=" matches these operands
operand types are: Dialog = Dialog

所以我用谷歌搜索了一下,在 this SO thread (3rd answer) 中找到了我试过的代码片段:

dialog_.~Dialog();
new(&dialog_) Dialog(/* different constr. w/ parameters passed from MyClass */);

而且它有效。线程中的答案虽然指出“虽然这的值(value)并没有超出纯粹的理论范围。但不要在实践中这样做。整个事情丑陋得无法描述。

那么,如果不使用那段明显不受欢迎的代码,我能做些什么来解决我的问题呢?

希望您能理解我要实现的目标。谢谢!

最佳答案

有两种方法可以达到你想要的效果。

在 c++98 中,您需要将一些初始化推迟到从构造函数调用的 init() 函数。这有点恶心,因为它意味着对许多成员变量的冗余构造和赋值。

在 c++11 中,您可以调用初始化列表中的其他 1 个构造函数,传递计算值(这些值可以在静态函数中计算以保持清洁)。

如果您提供构造函数代码的示例,我可以告诉您如何操作。

关于c++ - 使用不同的构造函数重新分配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617301/

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