簡潔な答え:
const char *get_string() { return ""; }
また
char *get_string() { return const_cast<char *>(""); }
また
char *get_string() { return NULL; }
また
std::string get_string() { return std::string(); }
詳細な回答:
文字列リテラルから への暗黙的な変換char *
は C および C++98/C++03 でサポートされていますが、明らかに C++11 ではサポートされていません。非推奨の警告は、特にコード C++11 を移行できるようにしたい場合に、これに対処する必要があることを知らせるためにあります。
空の文字列リテラル ("") は実際には空ではなく、1 つの null 文字 (\0) を含む文字列です。を使用するreturn "";
と、実際には const 文字列リテラルのメモリ位置へのポインターが返されるため、関数の戻り値の型はconst char *
.
非 const ポインターを文字列リテラルに返す必要がある場合は、const_cast
演算子を使用してconst
.
nullptr
呼び出し元のコードが NULL ポインターをチェックしている場合に限り、空で非 const の C スタイルの文字列を返す関数に対してNULL (または ) を返すことをお勧めします。
C++ には独自の文字列型 ( std::string
) があることに注意してください。可能であれば、C スタイルの文字列ではなく、これを使用することをお勧めします。