es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo usar el operador de comparación global al comparar dos tipos de estructura diferentes para resolver los errores en C++

Cuando intento comparar miembros de dos estructuras diferentes, obtengo los siguientes errores:

error C2676: operador binario ‘==’ no está definido para ‘main::strRGBSettings’ o no hay una conversión a un tipo aceptable por el operador predefinido.

error C2678: no se encontró un operador binario ‘==’ que tome un operando izquierdo de tipo ‘const T1’ (o no hay una conversión aceptable).

¿Alguien puede ayudarme a usar el operador de comparación global?

#include <string>
#include <iostream>

int main()
{
    struct strRGBSettings
    {
        uint8_t red;
        uint8_t green;
        uint8_t blue;
    };

    struct strStandardColors
    {
        static strRGBSettings black() { return { 0x00, 0x00, 0x00 }; }
        static strRGBSettings red() { return { 0xFF, 0x00, 0x00 }; }
        static strRGBSettings blue() { return { 0x00, 0x00, 0xFF }; }
    };

    struct ColorState
    {
        strRGBSettings RGB;
    };

    ColorState l_colorState;
    if (l_colorState.RGB == strStandardColors::red())
    {
        std::cout << "El color es de tipo Rojo" << std::endl;
    }
    return 0;
}

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Los errores sugieren que no hay un operador de comparación global definido para la estructura strRGBSettings. Para solucionar esto, puedes definir el operador de comparación global usando operator== de la siguiente manera:

    bool operator==(const strRGBSettings& lhs, const strRGBSettings& rhs)
    {
        return lhs.red == rhs.red && lhs.green == rhs.green && lhs.blue == rhs.blue;
    }
    

    Luego puedes usar este operador para comparar dos estructuras strRGBSettings como se muestra en la función principal.

Comments are closed.