2017-08-28 2 views
0

Ich weiß, ich muss ein statisches Klassenmitglied außerhalb der Klasse im globalen Bereich/Namespace definieren, sonst wird der Compiler über fehlende Symbole beschweren. So im folgenden kann ich nicht verwalten die innere Struktur zu definieren:Wo definiere ich ein inneres statisches Strukturobjekt? Es scheint, ich kann nicht

struct MyStruct 
{ 
    struct MyInnerStruct 
    { 
     int notimportant1, notimportant2; 
    }; 
    static MyInnerStruct object1; 
}; 

int main(void) 
{ 
    MyStruct foo; 
    foo.object1.notimportant1 = 5; // Unresolved external symbol, I expected this to happen 

    return 0; 
} 

MyInnerStruct MyStruct::object1; // Typical definition of a static member 
            // MyInnerStruct is underlined, saying it's undefined 

ich auch eine Vorwärts-Erklärung darüber versucht, aber es sagte etwas über Neudefinition. Eigentlich habe ich mich auch gefragt, dies muss jeden

Antwort

5

neu zu definieren, weil es kein solches Symbol MyInnerStruct im globalen Namespace gibt, es ist innerhalb MyStruct. I.e. Sie müssen

MyStruct::MyInnerStruct MyStruct::object1; 

Dies funktioniert ähnlich wie Sie Memberfunktionen außerhalb der Klasse definieren.

+1

nur hinzuzufügen, scheint wie "ungelöst externes Symbol" hat damit nichts zu tun und ist ein separates Problem –

Verwandte Themen