私の不適切な用語についてお詫び申し上げます。
エントリが存在しない場合に NULL ポインターを返すコードがあります。
ObjectType * MyClass::FindObjectType( const char * objectTypeName )
{
if ( objectTypeMap.find( objectTypeName ) == objectTypeMap.end() )
{
Msg( "\n[C++ ERROR] No object type: %s", objectTypeName );
return NULL;
}
else
return &objectTypeMap[ objectTypeName ];
}
同じことをしたいのですが、今回は単なるポインターではなくオブジェクトを返します。次のコードでは、コンパイラ エラーは発生しません (これには驚きました)。
ObjectType MyClass::FindObjectType( const char * objectTypeName )
{
if ( objectTypeMap.find( objectTypeName ) == objectTypeMap.end() )
{
Msg( "\n[C++ ERROR] No object type: %s", objectTypeName );
}
else
return objectTypeMap[ objectTypeName ];
}
ポインターを使用すると、次のようにエントリが見つからなかったかどうかを確認できます。
if ( FindObjectType( objectType ) == NULL )
//Do something
返されるオブジェクトで同等のチェックを実行するにはどうすればよいですか?