Код: Выделить всё
#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