gpt4 book ai didi

c++ - 大括号括起来的初始值设定项列表的无效使用

转载 作者:行者123 更新时间:2023-11-28 04:56:52 25 4
gpt4 key购买 nike

我要初始化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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com