mir*_*irk 1 c++ c++11 list-initialization
我有一个简单布局的结构,类似于:
struct A
{
int a,b;
};
Run Code Online (Sandbox Code Playgroud)
我已经在整个地方使用统一初始化来创建我的结构,如:
A obj{2,3};
Run Code Online (Sandbox Code Playgroud)
后来,我在A中添加了一个构造函数.它现在看起来像:
struct A
{
int a,b;
A(){}
};
Run Code Online (Sandbox Code Playgroud)
这打破了统一初始化的使用.有没有一种简单的方法可以让这项工作重新开始.也许通过使用默认关键字?
我希望有一些简单的东西,以匹配我的简单结构.
你简单的构造确实什么都没有(甚至没有初始化a和b).如果你想初始化它们,为什么不做类似的事情
struct A {
int a = 0, b = 0;
};
Run Code Online (Sandbox Code Playgroud)
那样,
A x;
A y { 0 };
A z { 0, 0 };
Run Code Online (Sandbox Code Playgroud)
所有的工作和初始化a和b为0.
如果这对你不起作用,因为你有一个更复杂的构造函数,那么你可以使用这样的委托构造函数:
struct A {
int a, b;
A() : A(0, 0) { }
A(int x) : A(x, 0) { }
A(int x, int y) : a(x), b(y) { }
};
Run Code Online (Sandbox Code Playgroud)
或者更简单
struct A {
int a, b;
A(int x = 0, int y = 0) : a(x), b(y) { }
};
Run Code Online (Sandbox Code Playgroud)
所有这些都适用于统一初始化.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |