Unten ist die Schnittstelle zu einer Klasse, die ich gerade schreibe. Wie schreibe ich am Beispiel der bereitgestellten Klasse einen Drei-Wege-Vergleichsoperator?
#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.
Unten ist die Schnittstelle zu einer Klasse, die ich gerade schreibe. Wie schreibe ich am Beispiel der bereitgestellten Klasse einen Drei-Wege-Vergleichsoperator? [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] Hinweise: [list] [*]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.
Ich benötige eine Überladung des Lambda für bestimmte Konzepte (Anforderungen). In der Vorlagensyntax funktioniert es einwandfrei, aber natürlich ist „Lambda keine Funktion“ und kann nicht überladen...
Ich versuche, eine virtuelle Umgebung einzurichten, um Code für zwei Komponenten eines Projekts zu schreiben, die über eigene separate Github-Repositorys verfügen. Das eine hängt vom anderen ab. Ich...
Ich habe ein Problem mit der Beibehaltung von YAML-Ankern für numerische Werte, insbesondere bei der Zahl 0, bei der Verwendung von ruamel.yaml funktionieren alle anderen numerischen Werte...
Ich verwende derzeit Langchains Selbstbildungsfunktionalität von Retriever, um relevante Filterkriterien aus natürlichen Sprachfragen und Retriever auf der Grundlage dieser Filter zu extrahieren. Ich...