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