価格に基づいて部屋を並べ替えるためにoperator <
をオーバーロードしようとしました。ここでオーバロードオペレータで間違いが見つかりません<
は私のコードの関連する部分である:
class Room{
protected:
int roomNo;
int category;
Client client;
public:
Room();
Room(int no, int cat, Client cl);
void printData();
int charge();
Room operator < (Room &r1);
};
Room Room::operator < (Room &r1){
if(this->charge() < r1.charge()){
return r1;
}
else{
return *this;
}
}
しかし、私はoperator<
を使用しようとすると、コンパイラは私に次のエラーを与える:
main.cpp:(.text+0x2d8): undefined reference to `Room::operator<(Room const&)'
main.cpp:(.text+0x2ff): undefined reference to `Room::operator<(Room const&)'
[Error] ld returned 1 exit status
Makefile.win recipe for target 'Ask01.exe' failed
なぜコードはコンパイルされませんか?
http://stackoverflow.com/questions/4421706/operator-overloading?rq=1をご覧ください。機能の署名が正しくありません。ヒント:エラーはあなたに何をすべきか教えてくれます – EdChum
'Room&Room :: operator <(const Room&r1)'ではありませんか? – trojanfoe
Whet私はこれを持っていることを試みました: "7 [Room&Room :: operator <(Room&)]のプロトタイプが 'Room'のクラスと一致しません" – Sini