我有一个布局简单的结构,类似于:
struct A
{
int a,b;
};
我在所有地方都使用统一初始化来创建我的结构,例如:
A obj{2,3};
稍后,我为 A 添加了一个构造函数。它现在看起来像:
struct A
{
int a,b;
A(){}
};
这打破了统一初始化的使用。有没有一种简单的方法可以使这项工作再次进行。也许通过使用 default 关键字?
我希望有一些简单的东西来匹配我的简单结构。
最佳答案
您的简单构造函数什么都不做(甚至不初始化 a
和 b
)。如果你打算初始化它们,为什么不做类似的事情
struct A {
int a = 0, b = 0;
};
这样,
A x;
A y { 0 };
A z { 0, 0 };
所有工作并将a
和b
初始化为0。
如果这对您不起作用,例如你有一个更复杂的构造函数,那么你可以像这样使用委托(delegate)构造函数:
struct A {
int a, b;
A() : A(0, 0) { }
A(int x) : A(x, 0) { }
A(int x, int y) : a(x), b(y) { }
};
或者更简单
struct A {
int a, b;
A(int x = 0, int y = 0) : a(x), b(y) { }
};
所有这些都将在统一初始化下工作。
关于c++ - 列表初始化结合构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915751/