【发布时间】:2017-10-26 11:49:03
【问题描述】:
我要初始化 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);
但我对此不太满意,我想让代码紧凑
【问题讨论】:
-
什么是
MyStruct args...? -
注意
Foo(MyStruct args...)不是一个 C++ 风格的可变参数函数,它接受零个或多个MyStruct参数。这是一个 C 风格的可变参数函数,接受一个MyStruct,然后是任何以下参数列表,只能使用va_arg访问。 -
现在没时间给出正确答案,但您似乎想要
Foo(std::initializer_list<MyStruct> args);。 -
为什么你在不使用的时候把它标记为
initializer-list..? -
@Fulrus 在这种情况下,不清楚你在问什么。请编辑您的问题以包含相关信息。或者考虑发布另一个。
标签: c++ c++11 initializer-list