2010-03-30 14 views
38

Czy ktoś może podać przykład, jak zdefiniować nowy typ struktury w klasie w C++.Zdefiniuj strukturę wewnątrz klasy w C++

+10

Należy również zauważyć, że ta sama technika najbardziej upvotowanej odpowiedzi może być użyta do zdefiniowania klasy wewnątrz klasy, struktury wewnątrz struktury i klasy wewnątrz struktury. klasa i struct są różne tylko dla domyślnej widoczności ich członków (odpowiednio prywatnej i publicznej). –

+4

... i ich domyślny typ dziedziczenia (odpowiednio prywatny i publiczny). –

Odpowiedz

62

coś takiego:

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

Coś jak:

class Tree { 

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

Próbuję zrobić coś podobnego (tworzenie) drzewo huffman. Mam wątpliwości, w jaki sposób utworzysz obiekt węzła i jak uczynisz go dostępnym w funkcji głównej? – user3206225

41

klasa deklaruje & zagnieżdżona struct prawdopodobnie w jakimś pliku nagłówka

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); 
}; 

jeśli chcesz oddzielić realizacji/definicja, może w jakimś pliku CPP

Jeśli chcesz wstawić implementację, inne odpowiedzi będą dobrze.

+0

Tak więc mam strukturę z trzema zmiennymi wewnątrz i udało mi się skompilować mój kod ze słowem kluczowym "private:" wewnątrz. Więc jakie są granice tej struktury jako "prywatne"? Czy klasa, do której zdefiniowana jest struktura, może uzyskać dostęp do którejkolwiek z tych zmiennych? Czy absolutnie potrzebuję publicznych wskaźników funkcyjnych, aby odrzucić funkcje do głównej klasy? Zasadniczo posiadam wektor przypadków testowych reprezentowanych przez struct. – JoeManiaci

+0

"pełna ścieżka" właśnie uratowała mi życie! – yano

Powiązane problemy