结构结构,初始化

时间:2011-11-07 12:03:17

标签: c++ struct initialization

如何在外部结构内初始化内部结构?

struct TOuter
{
   struct TInner
   {
       bool b1, b2;
       TInner () : b1 (false), b2(false) {}
   };

   bool b3;

   TOuter (): TOuter::TInner(), b3(true) {} // Error
};

2 个答案:

答案 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;