如何在外部结构内初始化内部结构?
struct TOuter
{
struct TInner
{
bool b1, b2;
TInner () : b1 (false), b2(false) {}
};
bool b3;
TOuter (): TOuter::TInner(), b3(true) {} // Error
};
答案 0 :(得分:2)
在这种情况下,您没有TInner
结构的对象,因此无需初始化任何内容。
除此之外,它与任何其他类/结构类型相同:
struct TOuter
{
struct TInner
{
bool b1, b2;
TInner () : b1 (false), b2(false) {}
};
bool b3;
TInner foo;
TOuter (): foo(), b3(true) { // member variable
TInner x; // local variable
}
};
TOuter::TInner out; // need qualified name, bc. TInner is not in scope
...
bar(TOuter::TInner()); // temporary
答案 1 :(得分:0)
您应该在TOuter中创建一个TInner实例。
struct TOuter
{
struct TInner
{
bool b1, b2;
TInner () : b1 (false), b2(false) {}
};
TInner inner;
bool b3;
TOuter (): inner(), b3(true) {}
};
您也可以通过在结构之后写下变量名来执行此操作:
struct TInner
{
bool b1, b2;
TInner () : b1 (false), b2(false) {}
} inner;