здесь мой код: < /p>
Код: Выделить всё
#include
enum class Hand { Rock, Paper, Scissors };
std::strong_ordering operator(Hand a, Hand b) {
if (a == Hand::Paper && b == Hand::Scissors) return std::strong_ordering::less;
if (a == Hand::Scissors && b == Hand::Rock) return std::strong_ordering::less;
if (a == Hand::Rock && b == Hand::Paper) return std::strong_ordering::less;
if (a == b) return std::strong_ordering::equal;
return std::strong_ordering::greater;
}
< /code>
Эта реализация вводит циклическое сравнение: < /p>
[list]
[*] Paper < ScissorsКод: Выделить всё
Scissors < Rock[*]
Код: Выделить всё
Paper > Rock[/list]
Я использовал std :: strong_ordering в качестве типа возврата, Поскольку любые два значения типа enum class hand сравниваются, а все равные значения этого типа одинаковы. Вы можете увидеть, что этот код может быть скомпилирован, и хорошо работает над оценкой победителя игры. Конечно, я не могу поместить серию значений этого класса Enum в какую -то функцию или
Код: Выделить всё
std::setПодробнее здесь: https://stackoverflow.com/questions/794 ... otal-order
Мобильная версия