Tag: OPERATOR-OVERLOADING
Actualmente estoy tratando de aprender la sobrecarga de operadores y tengo un pequeño ejemplo que estoy tratando de entender. #pragma once class Vector2 { public: int u, v; Vector2(int u, int v): u(u), v(v){ }; }; y #include "Vector2.h" #include <iostream> std::ostream& operator<<(std::ostream& stream, const Vector2& other) { stream << . . . Read more
Intento probar durante la compilación si dos tipos son comparables en igualdad, y he definido operator== para ellos, así que deberían serlo. Sin embargo, el siguiente código no se compila: #include <string_view> struct A { int n; }; bool operator==(const A& a, const std::string_view s) { return a.n == s.size(); . . . Read more
Basado en la respuesta en https://stackoverflow.com/questions/8890051/implicit-conversion-when-overloading-operators-for-template-classes pude escribir el siguiente código que funciona perfectamente bien (ejemplo simplificado): “`c++ namespace my_library { template <typename t=""> struct Number { T n; <pre><code>inline Number(T n) : n(n) { } friend Number<t> operator+(const Number<t> &a, const Number<t> &b) { return Number<t>(a.n + b.n); } . . . Read more
¿Cuál es la diferencia entre sobrecargar el operador < y escribir un comparador con la misma lógica? Por ejemplo, quiero usar std::sort en mi clase. Puedo escribir mi propio comparador o puedo sobrecargar el operador <. ¿Qué debo hacer y por qué? (Normalmente sobrecargo <.)
Estoy tratando de recrear la clase std::array de una manera muy simple. (También la llamé vector, ya que creo que tiene más sentido en un espacio de nombres llamado maths). (Por supuesto, esto aún no está completo). Aquí está la clase vector. “`c++ namespace maths { … template <typename t,="" . . . Read more