std :: string hat einen Konstruktor, der einen const char * -Parameter akzeptiert. Der Konstruktor wird abstürzen, wenn Sie NULL übergeben, und dieser Konstruktor wird implizit aufgerufen, wenn Sie foo (NULL) schreiben.
Die einzige Lösung, die ich mir vorstellen kann, ist foo
zu überlasten %Vor%Sie könnten Boost.Optional verwenden.
%Vor%Um es mit einer Zeichenfolge aufzurufen:
%Vor%und ohne eine Zeichenfolge:
%Vor%Boost.Optional bietet Ihnen eine typsichere Möglichkeit, Nullwerte zu haben, ohne auf Zeiger und die damit verbundenen Probleme zurückgreifen zu müssen.
Sie haben eine Funktion, die eine std::string
akzeptiert, also stellen Sie ihr eine std::string
und keinen Zeiger zur Verfügung.
Dies wird die Funktion mit einer leeren Zeichenkette versehen, was wahrscheinlich auch Ihren Nullwert interpretiert hätte.