struct B {
int b;
B(int i = 0) : b(i) {}; // constructor
};
struct D : B {
int d;
};
int main () {
D obj = {1}; // <-- error
// D obj {1}; // <-- error (different)
}
上面的代码没有编译,并给出:
error: could not convert ‘{1}’ from ‘<brace-enclosed initializer list>’ to ‘D’
即使我删除“构造函数”行也是如此。如果我删除=
标志,即D obj {1};
它给出如下:
error: no matching function for call to ‘D::D(<brace-enclosed initializer list>)’
解决此类问题的正确语法是什么?