У меня возникли проблемы с перегрузкой меньше и выше операторов. они скомпилироваться сами по себе, но когда они используются для определения меньше или равно операторов (или больше), я получаю эту ошибку:нет совпадений для 'operator>'
error: no match for ‘operator>’ (operand types are ‘Job*’ and ‘Job’)
inline bool Job::operator<= (Job rhs) { return !(this > rhs); }
я изначально имел их operator(const Job& rhs) { ... }
, но я бросил все Конст и ссылочный синтаксис, чтобы увидеть, будет ли он работать, и у меня были проблемы с типом .. но даже точно так же, как и у меня такая же ошибка. Что я делаю не так??
вот код:
.cpp:
#include "Job.h"
void Job::setId(int i) { id = i; }
const int Job::processes() const { return process; }
const int Job::ticks() const { return tick; }
inline bool Job::operator< (Job rhs) { return (process * tick) < (rhs.processes() * rhs.ticks()); }
inline bool Job::operator> (Job rhs) { return (process * tick) > (rhs.processes() * rhs.ticks()); }
inline bool Job::operator<= (Job rhs) { return !(this > rhs); }
inline bool Job::operator>= (Job rhs) { return !(this < rhs); }
.h:
#include <string>
class Job {
public:
Job (std::string desc, int procs, int tcks)
: description{ desc }, process{ procs }, tick{ tcks }{};
void setId(int id);
const int ticks() const;
const int processes() const;
private:
std::string description;
const int process;
const int tick;
int id;
bool operator<(Job rhs);
bool operator>(Job rhs);
bool operator<=(Job rhs);
bool operator>=(Job rhs);
};
Спасибо! Думаю, мне понадобилось время, чтобы разобраться. Я отвечу на ваш ответ, когда он позволяет мне также –
, оператор должен быть 'const' –