Code: Select all
#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
- Ein Positionsobjekt sollte größer sein, wenn seine Zeileneigenschaft größer als das andere Positionsobjekt ist. Wenn die Zeilenwerte des Positionsobjekts gleich sind, ist derjenige mit dem größeren Spaltenwert der größte. Wenn sowohl die Zeilen- als auch die Spaltenwerte gleich sind, sind die beiden Positionen gleich (oder gleich).
- Die Koordinatenobjekte Zeile und Spalte gehören zu einer Klasse, die einen internen numerischen Typ enthält. Sie können einfach so behandelt werden, als wären sie eine einfache size_t-Zahl oder ein uintmax_t-Typ.
Mobile version