作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要初始化Foo类
class Foo {
public:
struct MyStruct {
uint8 i;
char c;
};
Foo(MyStruct args...){
};
};
但是我遇到了一个错误
error: invalid use of brace-enclosed initializer list
auto test = Foo(
{1, 'a'},
{2, 'b'}
);
如果我用变量来做,不会有错误
Foo::MyStruct a1 = {1, 'a'};
Foo::MyStruct b2 = {2, 'b'};
auto test = Foo(a1, b2);
但我对此并不满意,我想让代码紧凑
最佳答案
您需要明确说明要传递给构造函数的类型。以下编译:
auto test = Foo(
Foo::MyStruct{1, 'a'},
Foo::MyStruct{2, 'b'}
);
尽管 Foo(MyStruct args...)
不是 C++ 风格的可变参数函数,但请注意 aschepler 的评论。因此,如果您真的要尝试使用构造函数参数做一些事情,您可能会遇到麻烦。换句话说:你会遇到麻烦 :)。
关于c++ - 大括号括起来的初始值设定项列表的无效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953544/
我是一名优秀的程序员,十分优秀!