Ich versuche, ein Programm zu schreiben, wo ich zwei Mitarbeiter Bruttolohn mit einem überladenen Größer als Operator vergleichen kann. Um Bruttolohn zu erhalten, habe ich eine Mitgliedsfunktion, die das Bruttogehalt zurückgibt. Aus irgendeinem Grund, wenn ich die beiden Brutto vergleichen gehen bezahlt erhalte ich:überladen '>' als eine nicht Mitglied Funktion
Fehler 1 Fehler C2662: ‚
double employeeclass::Employee::grosspay(void)
‘: kann ‚this
‘ Zeiger von ‚const employeeclass::Employee
‘ auf ‚employeeclass::Employee &
‘ nicht konvertieren
und
2 IntelliSense: das Objekt geben Qualifier, die nicht kompatibel sind mit dem Elementfunktion-Objekttyp ist:
const employeeclass::Employee
Ich habe die Segmente des Codes, die mir die Probleme geben.
Die CPP:
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
#include "Employee.h"
namespace employeeclass {
bool operator> (const Employee &e1, const Employee &e2) {
if (e1.grosspay() > e2.grosspay())
return true;
else
return false;
}
}
Die H-Datei
namespace employeeclass {
class Employee {
friend bool operator> (const Employee &e1, const Employee &e2);
}
}
klingt wie die 'grouppay()' Funktion ist nicht markiert 'const' –
BTW' if (X) zurück wahr; else return false; 'kann besser ausgedrückt werden als' return X; ' –
Bitte bearbeiten Sie Ihre Frage, um ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) aufzunehmen, was am wichtigsten ist, das wir brauchen um die Erklärung von "Mitarbeiter :: grouppay" zu sehen. –