Estoy definiendo una clase ReturnValue
en C++ que necesita informar si un método fue exitoso. Quiero que los objetos de la clase evalúen a true
en caso de éxito y false
en caso de error. ¿Qué operador anulo para controlar la veracidad de mi clase?¿Cómo anulo el operador de bool en una clase de C++?
Respuesta
La respuesta simple es proveer operator bool() const
, pero es posible que desee ver en la safe bool idiom, donde en lugar de convertir bool (que a su vez podría convertirse implícitamente en otros tipos integrales) puede convertir a un tipo diferente (puntero a una función miembro de un tipo privado) que no aceptará esas conversiones.
Y si utiliza los últimos compiladores, puede usar la nueva característica de C++ 0x 'operador explícito bool()' para evitar las conversiones implícitas. –
¡Muy bonito! Probablemente vaya con el sencillo 'operator bool() const' en mi caso de uso actual, solo por simplicidad, pero la expresión bool segura parece mucho más adecuada para el código de producción real. Es un poco triste que C++ te obligue a la locura de esta manera. : -/ –
@Bo, por suerte, ya que este es un proyecto personal, puedo elegir mi compilador, y GCC 4.5 lo admite. ¡Gracias! –
Bueno, se podría sobrecargar operator bool()
:
class ReturnValue
{
operator bool() const
{
return true; // Or false!
}
};
sobrecarga de este operador:
operator bool();
- 1. ¿Cómo anulo el método setter de una propiedad en C#?
- 2. ¿Cómo anulo las funciones de una clase padre en python?
- 3. operador explícita de error bool
- 4. define el operador void * y el operador bool
- 5. ¿Cómo anulo correctamente un método de clase en un Objective-C en una subclase?
- 6. C error clase de plantilla ++ con == operador
- 7. operador de mapa [] y bool como valor
- 8. Incompatibilidades entre idioma bool seguro y operador explícito bool
- 9. cómo imprimir bool en el objetivo c
- 10. ¿Cómo anulo una importación de Python?
- 11. Cómo encontrar el tamaño de una clase en C#
- 12. ¿Cuál es el significado de "bool operador() const"
- 13. ¿Cómo sobrecargar el operador de indirección? (C++)
- 14. Si un operador está sobrecargado para una clase de C++, ¿cómo podría usar un operador predeterminado?
- 15. Cómo anulo una consulta en shell de mongo javascript
- 16. ¿Por qué iostream no sobrecarga el operador de bool?
- 17. operador <en C++
- 18. Es !! una forma segura de convertir a bool en C++?
- 19. ¿Cómo sobrecargar el operador [] en C#
- 20. en C# ¿Qué significa 'bool = bool! = True'?
- 21. Objetivo-C: BOOL vs bool
- 22. Cómo usar la variable estática (BOOL) en el Objetivo C
- 23. ¿Cómo anulo, no oculto, una variable miembro (campo) en una subclase C#?
- 24. ¿Por qué sobrecargar el operador de asignación de copia para una clase singleton en C++?
- 25. ¿Cómo crear una clase simulada con operador []?
- 26. BOOL envoltura? Haz un objeto de valor 'BOOL'. (Objetivo-C)
- 27. C++ sizeof con bool
- 28. C#: operador implícito y métodos de extensión
- 29. ¿Cómo usar los constructores y el operador de asignación de la clase base en C++?
- 30. ¿Cómo anulo limpiamente un establecimiento de propiedades?
Antes de hacer esto, tenga en cuenta los peligros de implementar 'operator bool': consulte http://www.devx.com/cplus/10MinuteSolution/32145/1954 – hrnt