Как перегрузить трехсторонний оператор для простого класса, значение которого зависит от двух числовых свойств?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как перегрузить трехсторонний оператор для простого класса, значение которого зависит от двух числовых свойств?

Сообщение Anonymous »

Ниже приведен интерфейс класса, который я сейчас пишу. Как написать оператор трехстороннего сравнения на примере предоставленного класса?

Код: Выделить всё

#pragma once
#ifndef POSITION_HPP
#define POSITION_HPP

#include 

#include 
#include 
#include 
#include 
#include 

namespace Text {

class Position
{
Coordinate row;  /// @private
Coordinate col;  /// @private

public:
Position();
Position(size_t rowNum);
Position(size_t rowNum, size_t colNum);
Position(Position &) noexcept  = default;               /// Copy Ctor
Position(Position &&) noexcept = default;               /// Move Ctors

Position &operator = (const Position &)     = default;  /// Copy Assignment Ops
Position &operator = (Position &&) noexcept = default;  /// Move Assignment Op

Coordinates getCoordinates() noexcept;
Coordinate  getRow() noexcept;
Coordinate  getCol() noexcept;

void setPosition(size_t rowNum, size_t colNum);
void setRow(size_t rowNum);
void setCol(size_t colNum);

Position &operator ++ () noexcept;
Position &operator ++ (int) noexcept;
Position &operator -- () noexcept;
Position &operator -- (int) noexcept;

friend bool operator == (const Position &lhs, const Position &rhs) noexcept;
friend std::strong_ordering operator  (const Position &lhs, const Position &rhs)
noexcept;
};

};

#endif

Примечания.
  • Объект Position должен быть больше, если его свойство строки больше, чем у другого объекта Position. Если значения строк объекта Position равны, то наибольшим является строка с большим значением столбца. Если значения row и col равны, то обе позиции одинаковы (или равны).
  • Строка объектов координаты и col относятся к классу, который содержит внутренний числовой тип. С ними можно просто обращаться так, как если бы они были простым числом size_t или типом uintmax_t.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ngent-on-2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»