繁体   English   中英

括号括起的初始化列表无效使用

[英]invalid use of brace-enclosed initializer list

我想初始化Foo类

class Foo {
public:
    struct MyStruct {
        uint8 i;
        char c;
    };

    Foo(MyStruct args...){

    };
};

但是我遇到一个错误

错误:括号括起的初始化列表无效使用

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'}
);

注意aschepler的评论,尽管Foo(MyStruct args...)不是C ++样式的可变参数。 因此,如果您实际上要尝试使用构造函数参数进行操作,则可能会遇到麻烦。 换句话说:您会遇到麻烦:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM