#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.
Ниже приведен интерфейс класса, который я сейчас пишу. Как написать оператор трехстороннего сравнения на примере предоставленного класса? [code] #pragma once #ifndef POSITION_HPP #define POSITION_HPP
#include
#include #include #include #include #include
namespace Text {
class Position { Coordinate row; /// @private Coordinate col; /// @private
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
[/code] Примечания. [list] [*]Объект Position должен быть больше, если его свойство строки больше, чем у другого объекта Position. Если значения строк объекта Position равны, то наибольшим является строка с большим значением столбца. Если значения row и col равны, то обе позиции одинаковы (или равны).
[*]Строка объектов координаты и col относятся к классу, который содержит внутренний числовой тип. С ними можно просто обращаться так, как если бы они были простым числом size_t или типом uintmax_t.