【发布时间】:2020-01-02 12:56:24
【问题描述】:
我的项目中有一个编译错误“引用非常量的初始值必须是左值”。 我读过它,但大多数问题是关于将值作为参数传递给函数。
Component.cpp 中的代码
const FrameData* Animation::GetCurrentFrame() const
{
if (frames.size() > 0)
{
return &frames[currentFrameIndex];
}
return nullptr;
}
void CAnimation::Update(float deltaTime)
{
FrameData& data = currentAnimation.second->GetCurrentFrame(); //**ERROR IS HERE**
}
【问题讨论】:
-
GetCurrentFrame返回一个指针,你不能将它分配给一个引用。 -
将
FrameData&替换为FrameData*(以及以下data.s 由data->)应该可以编译。在这种情况下,您可能想要使用指针。 -
使用
auto作为局部变量data。这将为您推断出正确的返回类型。话虽如此,正如@Holt 指出的那样,您不能将pointer分配给reference