2016-03-22 13 views
-2
enthält

Ich habe einen Vektor, in dem ich Unterklassen speichern möchte. Das Problem, mit dem ich konfrontiert bin, ist, dass es mir einen Fehler gibt. Ich sah here als Referenz, aber jetzt habe ich diese Störung erhalte:Erstellen eines Klassenvektors, der Unterklasse

Error: "Subclass::Subclass" (declared at...) is inaccessible.

Mein Code ist wie folgt:

class SuperClass 
{ 
public: 
    SuperClass() {} 
    ~SuperClass() {} 

}; 
class SubClass : public SuperClass 
{ 
    SubClass() {} //there is no .cpp 
    ~SubClass() {} 
}; 

int main() 
{ 
    std::vector<SuperClass*> superClass; 
    superClass.push_back(new SubClass()); 
    return 0; 
} 
+0

Bitte posten Sie ein ** vollständiges, aber minimales ** Beispiel, das Leser ausprobieren können. –

+1

Das heißt, die Diagnose des Compilers "ist nicht zugänglich" sagt alles. Auf den Konstruktor kann nicht zugegriffen werden, da die Mitglieder einer 'Klasse' standardmäßig' privat' sind. Verwenden Sie also entweder das Schlüsselwort 'struct' oder, besser noch, fügen Sie' public: 'Zugriffsspezifizierer vor der Konstruktordefinition hinzu, oder, ungood, machen Sie die Klasse' Program' zu einem 'Freund'. –

Antwort

1

Der Standardzugriffstyp für class ist private. Daher sind sowohl der Konstruktor als auch der Destruktor Subclassprivate. Fügen Sie den Zugriffsspezifizierer public vor ihnen hinzu.

class Subclass : public SuperClass{ 

    // Add this 
    public: 

     SubClass() {} //there is no .cpp 
     ~SubClass() {} 
    }; 
+0

Es hat funktioniert. Gut gemacht, ich habe nur den Zugangstyp vergessen. –