Je travaille sur une affectation de classe qui a commencé petit, donc je l'ai eu tous dans un fichier. Maintenant, il est devenu plus grand et j'essaie de compiler séparément main, fonctions et classes (donc toutes les classes sont ensemble dans un .h et un .cpp) J'ai une classe B, qui est le parent de beaucoup d'autres et vient en premier dans le fichier. Un de ses membres de données ne fonctionne pas maintenant que j'utilise la compilation séparée, ce qui provoque des dizaines d'erreurs.C++ question ... définition ne reconnaît pas les vecteurs spécifiés dans la déclaration
Dans .h
class A;
class B {
public:
B(){}
A* myptr;
void whatever();
vector<A*> myAs; //this one is the problem
};
Dans 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!
}
}
Je reçois des erreurs: soit "Myas n'a pas été déclaré dans ce cadre" ou "classe B n'a pas Myas membres."
J'ai inclus < vector>, classe A déclarée comme vous le voyez ci-dessus, et je me suis définitivement souvenu d'inclure le .h en haut du fichier .cpp! Y at-il quelque chose à propos des vecteurs ou des classes et de la compilation séparée que je ne comprends pas? C'est dans Xcode, BTW.
Y at-il un message d'erreur associé à la ligne de code dans l'en-tête qui déclare myAs? Ou y a-t-il seulement un message d'erreur associé à la ligne de code dans le fichier CPP qui utilise myAs? – ChrisW
En passant, je vous recommande fortement de mettre du code dans le destructeur qui supprime les objets pointés par A * dans myAs car c'est une fuite de mémoire qui se produirait autrement. –