J'ai vu la solution d'un autre problème comme celui-ci, mais cela ne m'aide pas du tout. Sur la ligne
studMap[getName()].push_back(getGrade());
J'obtiens l'erreur suivante:
Une référence de membre non statique doit être relative à un objet spécifique.
Voici mon code:
class CStudent :public CPerson {
protected: CPerson::name;
protected: CPerson::EGN;
protected: string specialty;
public: CStudent(string n, string E, string s) {
setName(n);
setEgn(E);
setSpecialty(s);
}
string getName() {
return name;
}
};
class CSubject:public CStudent{
protected: string subj;
protected: int grade;
void setSubj(string s) {
subj = s;
}
void setGrade(int g) {
grade = g;
}
int getGrade() {
return grade;
}
std::map<CStudent, std::list<int> > studMap;
studMap[getName()].push_back(getGrade());
};
Comment puis-je transmettre ma valeur de la méthode à la carte sans obtenir cette erreur et d'où vient-elle?
studMap[getName()].push_back(getGrade());
Des expressions comme celle-ci doivent être à l'intérieur d'une méthode.
Vous l'avez écrit dans une déclaration de classe. Dans la déclaration de classe, vous ne pouvez déclarer / définir que des méthodes et des données membres. Si vous vous attendez à ce que cette expression soit exécutée lors de la création d'un objet de CStudent, vous devez l'écrire dans le constructeur CStudent.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots