Wie überlade ich einen 3-Wege-Operator für eine einfache Klasse, deren Wert von zwei numerischen Eigenschaften abhängt?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie überlade ich einen 3-Wege-Operator für eine einfache Klasse, deren Wert von zwei numerischen Eigenschaften abhängt?

Post by Anonymous »

Unten ist die Schnittstelle zu einer Klasse, die ich gerade schreibe. Wie schreibe ich am Beispiel der bereitgestellten Klasse einen Drei-Wege-Vergleichsoperator?

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

Hinweise:
  • 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post