怎么能让这个函数返回null?

时间:2013-01-11 03:55:49

标签: c++

  

可能重复:
  C++ return a “NULL” object if search result not found

我试图在某种情况下返回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
                }

3 个答案:

答案 0 :(得分:4)

在C ++中没有空引用这样的东西。您的选择包括:

  • 更改您的函数以返回(智能)指针。
  • 创建一个虚拟的标记对象(const Entity null_entity),并返回对它的引用。

答案 1 :(得分:3)

引用不能为NULL。你必须改为使用指针:

Entity* GetEntityAt(int index)
                {
                    if (!GameObjects.empty())
                    {
                        lock_guard<mutex> lock(PadLock);
                        return &GameObjects[index];
                    }
                    return NULL;
                }

答案 2 :(得分:1)

引用 IS 它引用的对象。由于NULL不是对象,因此如果函数返回引用,则不能返回NULL。