Intenté crear una clase con un operator bool
y un operator void*
, pero el compilador dice que son ambiguos. ¿Hay alguna manera de explicarle al compilador qué operador usar o no puedo tener ambos?define el operador void * y el operador bool
class A {
public:
operator void*(){
cout << "operator void* is called" << endl;
return 0;
}
operator bool(){
cout << "operator bool is called" << endl;
return true;
}
};
int main()
{
A a1, a2;
if (a1 == a2){
cout << "hello";
}
}
¿Seguro de que realmente se necesita tanto? 'operator void *' funciona como un 'operador bool' ligeramente más seguro porque hay menos cosas malas que puedes hacer accidentalmente con un' void * '. También google para idioma booleano seguro que minimiza el abuso aún más (definiendo un 'operador puntero-a-miembro' si no me equivoco). – UncleBens
En realidad, fue en referencia a una respuesta que proporcioné para 'ifstream'. Me preguntaba por qué se llamó al operador void * antes del operador bool, pero cuando lo hice fue ambiguo. – Default