#cpp
struct subject
{
int c;
int m;
};
const bool operator > ( subject* first, subject* second )
{
return first->c > second->c;
}
Ошибка:
Overloaded 'operator>' must have at least one parameter of class or enumeration type.
Что не так?
Ответы
Ответ 1
Перегруженные операторы в языке С++ перегружаемы только для класс-типов или enum-типов. Любой перегруженный оператор должен иметь как минимум один параметр класс-типа или enum-типа (или являться ссылкой на такие типы). У вас оба параметра перегруженного оператора имеют тип "указатель". Тип "указатель" не является ни класс-типом или enum-типом. Поэтому ваша перегрузка не является корректной. Вот что не так. А что с этим делать - зависит от того, чего именно вы пытаетесь достичь и почему вдруг вы пытаетесь перегрузить оператор именно для указателей. Ваш вопрос не очень-то богат деталями на эту тему.Ответ 2
Агрументами в данном случае должны быть экземпляры или ссылки (лучше, константные), а не указатели. А вот const при возвращаемом значении - ни к чему. То есть: bool operator > ( const subject& first, const subject& second ) { return first.c > second.c; }
Комментариев нет:
Отправить комментарий