Ich habe bisher nur mit C gearbeitet und stoße in C++ auf einige ungewohnte Probleme.
Nehmen wir an, ich habe eine Funktion wie diese in C, was sehr typisch wäre:
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 */
}
Und nehmen wir an, ich versuche, eine ähnliche Funktion in C++ zu schreiben:
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?
}
Im Grunde versuche ich nur zu verhindern, dass das Programm abstürzt, wenn some_cpp_function() mit NULL aufgerufen wird.
-
Was ist der typischste/üblichste Weg, dies mit einem C++-Objekt zu tun (ohne das Überladen der
==
Operator)? -
Ist das überhaupt der richtige Ansatz? Das heißt, sollte ich keine Funktionen schreiben, die ein Objekt als Argument nehmen, sondern eher Mitgliedsfunktionen schreiben? (aber selbst wenn dies der Fall ist, beantworten Sie bitte die ursprüngliche Frage)
-
Gibt es Gründe, zwischen einer Funktion, die einen Verweis auf ein Objekt annimmt, und einer Funktion, die einen Zeiger auf ein Objekt im C-Stil annimmt, zu wählen?