Я определил класс Player для выполнения некоторых операций, поэтому мне удобно перегрузить некоторые базовые операторы. В частности, я хочу использовать < для сравнения между объектами Player. В этом классе у меня есть следующее:Перегрузка '<' Перерыв оператора << для cout?
bool operator<(const Player& rhs) const {return (*this < rhs);}
К сожалению, это привело к проблемам. Позже, когда я пытаюсь вывести вектор, содержащий определенные элементы в моей основной функции, компилятор позволяет мне знать, что нет совпадения для операнда < <, и он ожидает, что std :: ostream < < Игрок. Ниже линия вызывает вопрос:
vector<Player> playerVec(6);
for (int i = 0; i < 6; i++) {
cout << playerVec[i];
}
Обратите внимание, что я на самом деле не хочу выводить объекты любого игрока непосредственно в потоке, так что я не думаю, что мне нужно перегрузить < <.
У меня есть представление о том, что происходит, поскольку компилятор принимает мое конкретное определение для <, а затем не удосуживается искать более общий случай. Мой вопрос заключается в том, нужно ли мне теперь перегружать оператор < <, чтобы вернуть его общую функциональность, или есть более простое решение?
Благодарим за предоставленную помощь!
Покажите нам код, пожалуйста. – 0x499602D2
Разве это не бесконечная рекурсия? – juanchopanza
Если вы хотите вывести свой объект, вы должны перегрузить << operator для этого, его не зависит от оператора <перегрузка –