У меня есть класс URL, который перегружает операторы ==, <,> и! = Для простого сравнения. Класс URL имеет строковый элемент данных и некоторые функции для работы со строкой. Операторы работают нормально при тестировании с классом URL.
У меня также есть класс Page, содержащий элемент данных URL. Я пытаюсь перегрузить те же операторы в классе Page. Равенство в классе Page основано на равенстве их соответствующих URL, поэтому я использую логические операторы класса URL при сравнении страниц. Это создает некоторые ошибки компилятора, которые я не могу понять. Код для операторов URL:
bool URL::operator ==(URL & u) const {
//url is the string instance variable
return url == u.GetURL();
}
Код для операторов страницы:
bool Page::operator ==(Page & p) const {
//url is the URL instance variable of the Page class
return url == p.GetURL();
}
Это приводит к таким ошибкам:
src/Page.cpp: In member function ‘bool Page::operator==(Page&) const’:
src/Page.cpp:21: error: no match for ‘operator==’ in ‘((const Page*)this)->Page::url == Page::GetURL()()’
inc/URL.h:118: note: candidates are: bool URL::operator==(URL&) const
Я предсказываю, что это что-то глупое, что я забываю. Вы докажете, что я прав?
править: Правильность констата укусила меня в заднице. Спасибо за помощь.