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.
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:
Luego puedes usar este operador para comparar dos estructuras strRGBSettings como se muestra en la función principal.