У меня проблемы с использованием перегруженных операторов в уже перегруженном операторе.В моем следующем коде я перегружен оператор && для сравнения двух объектов курса.Оператор, в свою очередь, обращается к функции, которая вызывает другие перегруженные операторы для сравнения переменных частного объекта этого объекта, чтобы в основном сравнивать их:
Код:
bool operator&&(const DaysOfWeek& a, const DaysOfWeek& b);
bool operator&&(const TimeInterval& a, const TimeInterval& b);
Теперь по моему вопросу.В этом проекте я использовал много перегруженных операторов, но мне впервые пришлось вызывать перегруженные операторы внутри других перегруженных операторов.К сожалению, мои перегруженные операторы в приведенном выше коде не вызываются из моей функции isOverlap.Поэтому мой вопрос: почему это так и как я могу это исправить?
Любая помощь будет с благодарностью оценена, поскольку я бьюсь головой об стену, пытаясь заставить это работать.Я включил соответствующий код из Course.h и функции и перегруженный оператор в Course.cpp.Я выделил соответствующие строки кода, для которых у меня неправильный вывод (без использования моего перегруженного оператора).
Код:
bool Course::isOverlap(const Course& b) const
{
DaysOfWeek tempDays = b.getDays();
TimeInterval tempTime = b.getTime();
if(this->instructor==b.getInstructor() &&
&this->days&&(&tempDays) &&
&this->time&&(&tempTime))
{
return true;
}
else
return false;
}
bool operator&&(const Course& a, const Course& b)
{
if (a.isOverlap(b))
return true;
else
return false;
}
Код:
#ifndef COURSE_H
#define COURSE_H
#include <string>
#include "TimeInterval.h"
#include "DaysOfWeek.h"
using namespace std;
class Course
{
public:
Course();
Course(const string courseCode, const string section,
const DaysOfWeek& days, const TimeInterval& time,
const string instructor);
void setCourse(string courseCode, string section,
DaysOfWeek& days, TimeInterval& time, string instructor);
string getCourse() const;
string getSection() const;
DaysOfWeek getDays() const;
TimeInterval getTime() const;
string getInstructor() const;
bool isOverlap(const Course& b) const;
bool isMatch(const Course& b) const;
private:
string courseCode;
string section;
DaysOfWeek days;
TimeInterval time;
string instructor;
};
bool operator&&(const Course& a, const Course& b);
bool operator==(const Course& a, const Course& b);
#endif //COURSE_H
Я также пытался заменить код, который у меня есть:
bool Course::isOverlap(const Course& b) const
{
DaysOfWeek tempDays = b.getDays();
TimeInterval tempTime = b.getTime();
if(instructor==b.getInstructor() &&
days && tempDays &&
time && tempTime)
{
return true;
}
else
return false;
}
Как предложил друг, но он даже не компилируется (не соответствует аргументам перегруженного оператора &&).