Ich arbeite an einer Klassenzuweisung, die klein begann, also hatte ich alles in einer Datei. Jetzt ist es größer geworden und ich versuche, Haupt, Funktionen und Klassen separat zu kompilieren (also sind alle Klassen zusammen in einer .h und einer .cpp) Ich habe eine Klasse B, die die Eltern von vielen anderen und ist kommt zuerst in der Datei. Eines seiner Datenelemente funktioniert nicht mehr, da ich eine separate Kompilierung verwende, die Dutzende von Fehlern verursacht.C++ Frage ... Definition erkennt keine Vektoren in der Deklaration angegeben
In .h
class A;
class B {
public:
B(){}
A* myptr;
void whatever();
vector<A*> myAs; //this one is the problem
};
In CPP
void B::whatever() {
vector<A*> newvector; //no problem!
myptr = &something; //no problem!
for (vector<A*>::iterator iter = myAs.begin(); iter != myAs.end(); ++iter) {
//error!
}
}
bekomme ich Fehler: "Klasse B hat kein Mitglied Myas" entweder oder "Myas wurde nicht in diesem Bereich erklärt"
Ich habe < vector>, nach vorne deklarierte Klasse A, wie Sie oben sehen, und ich erinnerte mich definitiv daran, die .h an der Spitze der .cpp enthalten! Gibt es etwas über Vektoren oder Klassen und separate Kompilierung, die ich nicht verstehe? Dies ist in Xcode, BTW.
Gibt es eine Fehlermeldung mit der Codezeile in der Kopfzeile, die myAs deklariert? Oder gibt es nur eine Fehlermeldung mit der Codezeile in der CPP-Datei, die myAs verwendet? – ChrisW
Nebenbei würde ich dringend empfehlen, dass Sie Code in den Destruktor stellen, der die Objekte löscht, auf die A * in myAs zeigt, da dies ein Speicherleck ist, das darauf wartet, andernfalls zu passieren. –