関数ポインタを受け入れる関数を作成しました。例:
typedef CString(*GetLabelFunc)(const CSomeObject* const pObject);
void DoSomething(GetLabelFunc funcGetLabel);
関数はnullポインターを受け取る可能性があり、その場合は空の文字列を返します。これは、パラメーターとしてNULLとnullptrを使用する場合にも、MSVC ++ 2010で完全に正常に機能しますが、このような特殊なケースでは、コンパイルの成功は安全な港とは見なされません...
ここで、渡すことは関数ポインターの場合nullptr
と同等かどうか疑問に思いました。NULL
私が尋ねている理由は、例えばvoid*
、関数ポインタを受け入れない(または少なくともそれは使用されるべきではない)からです。したがって、nullptrを関数ポインターに使用してはならないという同様の理由があるかもしれません。つまり、オブジェクトポインターに対してのみ機能するように設計されているのでしょうか。