gpt4 book ai didi

c++ - 如何保留隐式声明的聚合初始化构造函数?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:49 25 4
gpt4 key购买 nike

假设我有这样一个类:

struct X {
char buf[10];
};
X x{"abc"};

这编译。但是,如果我将用户定义的构造函数添加到类中,这个隐式声明的聚合初始化构造函数将被删除:

struct X {
char buf[10];
X(int, int) {}
};
X x{"abc"}; // compile error

如何声明我需要默认聚合初始化构造函数,就像默认构造函数 X()=default 一样?谢谢。

最佳答案

没有“默认聚合初始化构造函数”。

聚合初始化只发生在聚合上。聚合是没有(用户提供的)构造函数的类型。您所要求的在逻辑上是不可能的。

做你想做的事情的正确方法是创建一个工厂函数以你的特殊方式构造你的类型。这样,该类型可以保持聚合,但有一种快捷方式可以按照您想要的方式对其进行初始化。

当你想强制用户调用构造函数来构造它时,你给类型一个构造函数。如果不这样做,您只需使用工厂函数。

关于c++ - 如何保留隐式声明的聚合初始化构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366355/

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