0

重複の可能性:
検索結果が見つからない場合、C++は「NULL」オブジェクトを返します

特定の条件でNULLを返そうとしていますが、それができません。なぜ、null値または0を返すようにするにはどうすればよいですか?

struct Entity
{
    USHORT X;
    USHORT Y;
    UINT Serial;
    USHORT SpriteID;
    EntityType Type;
    Direction FacingDirection;
};

関数は次のとおりです。

Entity& GetEntityAt(int index)
                {
                    if (!GameObjects.empty())
                    {
                        lock_guard<mutex> lock(PadLock);
                        Entity& result = GameObjects[index];
                        return result;
                    }
                    return NULL; // <- this won't compile
                }
4

3 に答える 3

4

C++にはnull参照のようなものはありません。選択肢は次のとおりです。

  • (スマート)ポインターを返すように関数を変更します。
  • ダミーのセンチネルオブジェクト(const Entity null_entity)を作成し、そのオブジェクトへの参照を返します。
于 2013-01-11T03:58:03.980 に答える
3

参照をNULLにすることはできません。代わりにポインタを使用する必要があります。

Entity* GetEntityAt(int index)
                {
                    if (!GameObjects.empty())
                    {
                        lock_guard<mutex> lock(PadLock);
                        return &GameObjects[index];
                    }
                    return NULL;
                }
于 2013-01-11T03:57:48.733 に答える
1

参照は、参照するオブジェクトです。NULLはオブジェクトではないため、関数が参照を返す場合はNULLを返すことはできません。

于 2013-01-11T03:58:34.777 に答える