2011-11-07 5 views
2

Comment initialiser une structure interne à l'intérieur de la structure externe?Structure dans la structure, initialisation

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

    bool b3; 

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

Retagged C++, en espérant vraiment * est * C++ ... – jpalecek

Répondre

2

Dans ce cas, vous avez pas l'objet de la struct TInner, donc il n'y a pas besoin d'initialiser quoi que ce soit.

Autre que cela, il est tout de même que toute autre classe/type struct:

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

Suppression du passage inutile de cette répondre (comme c'est déjà présent dans la question). – iammilind

0

Vous devez créer une instance de l'intérieur TInner TOuter.

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

    TInner inner; 
    bool b3; 

    TOuter(): inner(), b3(true) {} 
}; 

Vous pouvez aussi le faire en écrivant le nom de la variable juste après la struct comme ceci:

struct TInner 
    { 
     bool b1, b2; 
     TInner() : b1 (false), b2(false) {} 
    } inner; 
Questions connexes