gpt4 book ai didi

c++ - 如何在类构造函数中初始化匿名结构?

转载 作者:行者123 更新时间:2023-12-03 07:09:07 26 4
gpt4 key购买 nike

我如何初始化匿名结构?

class A
{
public:
A() : m_var.var_1(1)
{
}

private:
struct
{
int var_1;
int var_2;
}m_var;
};

上面的代码在尝试编译时给了我这个错误:
main.cpp: In constructor ‘A::A()’:
main.cpp:6:16: error: expected ‘(’ before ‘.’ token
6 | A() : m_var.var_1(1)
| ^
| (
main.cpp:6:16: error: expected ‘{’ before ‘.’ token

最佳答案

您必须初始化整个对象,而不是数据成员的子对象。这不仅是匿名struct的特殊功能。例如。

A() : m_var{1, 0} // m_var.var_1 and m_var.var_2 are initialized as 1 and 0
{
}
从C++ 20开始,我们可以在初始化中使用 designated initializers来指定 struct的数据成员。例如。
A() : m_var{.var_1=1, .var_2=0} // same effect as above
{
}

关于c++ - 如何在类构造函数中初始化匿名结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63879132/

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