Структура в структуре, инициализация - PullRequest
2 голосов
/ 07 ноября 2011

Как инициализировать внутреннюю структуру внутри внешней структуры?

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

   bool b3;

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

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

В этом случае у вас нет объекта структуры 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
0 голосов
/ 07 ноября 2011

Вы должны создать экземпляр TInner внутри TOuter.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...