当前位置:  开发笔记 > 编程语言 > 正文

如何保持隐式声明的聚合初始化构造函数?

如何解决《如何保持隐式声明的聚合初始化构造函数?》经验,为你挑选了1个好方法。

假设我有一个这样的类:

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

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

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

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



1> Nicol Bolas..:

没有"默认聚合初始化构造函数".

聚合初始化仅发生在聚合上.聚合是除了其他之外没有(用户提供的)构造函数的类型.你所要求的在逻辑上是不可能的.

做你想做的事的正确方法是建立一个工厂功能,以你特殊的方式构建你的类型.这样,类型可以保持聚合,但是有一种以你想要的方式初始化它的简便方法.

如果要强制用户调用构造函数来构造它,则为类型提供构造函数.如果不这样做,您只需使用工厂功能.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有