Ich lese Effective C++ (Scott Meyers), und immer die Fehlermeldung "kein Spiel für Operator *", wenn folgenden Code aus diesem Buch zu kompilieren versuchen:kein Spiel für Betreiber *
rational.h
class rational
{
private:
int num;
int den;
public:
rational(int n = 0, int d = 1);
int getNum() const {return num;}
int getDen() const {return den;}
};
rational.cpp
#include "rational.h"
rational::rational(int n,
int d)
:num(n),
den(d)
{}
const rational operator*(const rational &lhs,
const rational &rhs)
{
return rational(lhs.getNum()*rhs.getNum(),
lhs.getDen()*rhs.getDen());
}
main.cpp
#include "rational.h"
int main()
{
rational r1(1,2);
rational r2;
r2 = 2*r1;
r2 = r1*3;
return 0;
}
Kann jemand erklären, warum das passiert?
Müssen Sie den Operator '' in der .h-Datei deklarieren? Funktioniert es, wenn Sie alle Klassen und den Code in main.cpp inline einreihen? – Rup
ja, es kompiliert in-line in main.cpp. Aber warum ? –
@Tony_M: In Bezug darauf, wie Sie nicht über Deklarationen und Definitionen wissen, implementieren Sie doch Operatoren, Konstanz und alles: Ist das überhaupt Ihr eigener Code?/oops, Sie beziehen sich auf Scott Meyers. Ich denke, du solltest zuerst ein einführendes Buch bekommen, nicht eines, das deine grundlegenden Fähigkeiten manifestiert und durchsetzt. –