0

可能重复:
如果未找到搜索结果,C++ 将返回“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++ 中没有空引用之类的东西。您的选择包括:

  • 更改您的函数以返回(智能)指针。
  • 创建一个虚拟哨兵对象 ( 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 回答