我没有使用C ++的经验,所以这可能是一个愚蠢的问题,但我已经尝试用谷歌搜索(这很难,我不确定google如何在其搜索中处理parens braces等)甚至尝试了一些矢量和结构教程,但我无法弄清楚。
我遇到了一行代码,我在下载的来源中无法理解,这行是什么意思?
std::vector<node> nodes = std::vector<node>{{node{}}};
node
是一个结构,定义为:
struct node {
enum class type : uint16_t {
none = 0,
integer = 1,
real = 2,
string = 3,
vector = 4,
bitmap = 5,
audio = 6,
uol = 7
};
uint32_t name = 0;
uint32_t children = 0;
uint16_t num = 0;
type data_type = type::none;
union _data {
int64_t integer = 0;
double real;
uint32_t string;
int32_t vector[2];
struct _bitmap {
uint32_t id;
uint16_t width;
uint16_t height;
} bitmap;
struct _audio {
uint32_t id;
uint32_t length;
} audio;
} data;
};
它给了我一个编译错误,抱怨说node
到uint32_t
没有可行的转换。
我不理解的那一行的唯一部分是最后的嵌套花括号,所以我假设它是问题所在。但它在做什么呢?
我想如果它只有一个参数,并且它在列表中传递带有node{}
的列表,例如,
std::vector<node> nodes = std::vector<node>({{node{}}});
但是为什么要尝试将其转换为uint32_t
?我很困惑。如果有人能够对此有所了解,我将非常感激。