2010-03-30 40 views
38

¿Puede alguien darme un ejemplo sobre cómo definir un nuevo tipo de estructura en una clase en C++. Gracias.define una estructura dentro de una clase en C++

+10

Tenga en cuenta también que la misma técnica de la respuesta más actualizada se puede utilizar para definir una clase dentro de una clase, una estructura dentro de una estructura y una clase dentro de una estructura. class y struct son solo diferentes para la visibilidad predeterminada de sus miembros (privada y pública, respectivamente). –

+4

... y su tipo de herencia predeterminado (privado y público, respectivamente). –

Respuesta

62

Algo como esto:

class Class { 
    // visibility will default to private unless you specify it 
    struct Struct { 
     //specify members here; 
    }; 
}; 
5

Algo así como:

class Tree { 

struct node { 
    int data; 
    node *llink; 
    node *rlink; 
}; 
..... 
..... 
..... 
}; 
+0

estoy tratando de hacer algo similar (creando) huffman tree. Dudo que ¿cómo crearás el objeto de nodo y cómo lo harás accesible en la función principal? – user3206225

41

clase declarar & estructura anidada probablemente en algún archivo de cabecera

class C { 
    // struct will be private without `public:` keyword 
    struct S { 
     // members will be public without `private:` keyword 
     int sa; 
     void func(); 
    }; 
    void func(S s); 
}; 

si desea separar la implementación/definición, tal vez en algún archivo CPP

void C::func(S s) { 
    // implementation here 
} 
void C::S::func() { // <= note that you need the `full path` to the function 
    // implementation here 
} 

si desea alinear la implementación, otras respuestas funcionarán bien.

+0

Así que tengo una estructura con tres variables dentro y pude compilar mi código con la palabra clave 'private:' dentro. Entonces, ¿cuáles son los límites de esa estructura que es "privada"? ¿Puede la clase donde se define la estructura acceder a cualquiera de esas variables? ¿Necesito indicadores de función pública para acceder a las funciones dentro de la clase principal? Básicamente, lo que tengo es un vector de casos de prueba representados por la estructura. – JoeManiaci

+0

"camino completo" ¡me salvó la vida! – yano

Cuestiones relacionadas