Jennesta
Erfahrenes Mitglied
Hey Leute,
ich habe ein Problem beim überladen des Operators '>=".
Folgender Sachverhalt:
Ich habe eine template-Klasse erstellt die einen Stack darstellen soll.
Der Stack lässt sich wunderbar füllen, jeweils mit Daten des Typs Student, wofür ich eine eigene Klasse erstellt habe.
Nun muss ich den Stack nach der Matrikelnummer sortieren. Ich habe die Operatoren zuvor in der Klasse Student überladen und dort hat der Vergleich auch funktioniert.
Nun vergleiche ich aber in der Template-Klasse wodurch mir der linke Operand fehlt.
Meine Frage ist wie kann ich darauf zugreifen?
Die Funktion in Student sieht folgendermaßen aus.
getestet habe ich dies folgendermaßen :
Nun möchte ich diesen vergleich so verwenden:
T ist hier die Klasse Student.
Wie gesagt macht der Compiler am roten Teil ärger, was ich verstehen kann, da er ja matNr nicht kennt.
Daher die Frage wie greife ich auf den linken Operanden zu?
Falls noch mehr Code benötigt wird bitte sagen.
lg Jennesta
ich habe ein Problem beim überladen des Operators '>=".
Folgender Sachverhalt:
Ich habe eine template-Klasse erstellt die einen Stack darstellen soll.
Der Stack lässt sich wunderbar füllen, jeweils mit Daten des Typs Student, wofür ich eine eigene Klasse erstellt habe.
Nun muss ich den Stack nach der Matrikelnummer sortieren. Ich habe die Operatoren zuvor in der Klasse Student überladen und dort hat der Vergleich auch funktioniert.
Nun vergleiche ich aber in der Template-Klasse wodurch mir der linke Operand fehlt.
Meine Frage ist wie kann ich darauf zugreifen?
Die Funktion in Student sieht folgendermaßen aus.
Code:
// Größer-Operator
bool Student::operator >= (const Student& stud) {
if (matNr >= stud.matNr)
return true;
else
return false;
}
Code:
if (stud1 >= stud2) {
cout << "Stud1 ist größer oder gleich" << endl;
} else {
cout << "Stud1 ist kleiner" << endl;
}
Nun möchte ich diesen vergleich so verwenden:
Code:
template<int size, class T>
bool StackSpeicher<size, T>::operator >= (const Student& stud) {
if (matNr >= stud.matNr)
return true;
else
return false;
}
Wie gesagt macht der Compiler am roten Teil ärger, was ich verstehen kann, da er ja matNr nicht kennt.
Daher die Frage wie greife ich auf den linken Operanden zu?
Falls noch mehr Code benötigt wird bitte sagen.
lg Jennesta