【发布时间】:2017-08-09 17:31:56
【问题描述】:
假设我有这个结构:
struct MyStruct {
int field1;
char *field2;
MyStruct(int a, char* b): field2(b) {
field1 = doStuff(a);
}
MyStruct(int a): MyStruct(a, nullptr) {}
~MyStruct();
}
据我所知,这不是一个聚合,因为我有一些构造函数。
我想要实现的是以自定义方式使用大括号初始化器,这意味着使用这样的代码:
MyStruct x = { 1, "string" };
隐式调用正确的构造函数(在本例中为第一个)。
这有可能吗?
【问题讨论】:
-
initializer_list?顺便说一句...在这种特殊情况下,您可以使用 default argument 来减少代码。
-
如果你只使用
const char*而不是char*,它只是按原样编译。有什么问题?
标签: c++ uniform-initialization list-initialization