He trabajado en su mayoría sólo con C y estoy corriendo en algunas cuestiones desconocidas en C++.Comprobación de un objeto nulo en C++
Digamos que tengo alguna función como esta en C, lo que sería muy típico:
int some_c_function(const char* var)
{
if (var == NULL) {
/* Exit early so we don't dereference a null pointer */
}
/* The rest of the code */
}
Y digamos que estoy tratando de escribir una función similar en C++:
int some_cpp_function(const some_object& str)
{
if (str == NULL) // This doesn't compile, probably because some_object doesn't overload the == operator
if (&str == NULL) // This compiles, but it doesn't work, and does this even mean anything?
}
Básicamente, lo único que trato de hacer es evitar que el programa falle cuando se llama a some_cpp_function() con NULL.
¿Cuál es la forma más típica/común de hacer esto con un objeto de C++ (que no implica la sobrecarga del operador
==
)?¿Es este el enfoque correcto? Es decir, ¿no debería escribir funciones que toman un objeto como argumento, sino escribir funciones de miembro? (pero incluso si es así, responda la pregunta original)
Entre una función que toma una referencia a un objeto, o una función que toma un puntero C-style a un objeto, hay razones para elegir una sobre el ¿otro?
Esta es una buena pregunta. Es una pena que la mayoría de las personas que responden no entienden lo que estás preguntando. Yo * creo * Nilesh proporcionó la respuesta correcta; y estoy bastante seguro de que funciona incluso al cruzar un límite de aplicación/objeto compartido * si * el objeto compartido exporta el objeto nulo. – jww