【问题标题】:C++ How to fix error "initial value of reference to non-const must be an lvalue"?C ++如何修复错误“对非常量的引用的初始值必须是左值”?
【发布时间】: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

标签: c++ pointers reference


【解决方案1】:
 void CAnimation::Update(float deltaTime)
 {
        const FrameData* data = currentAnimation.second->GetCurrentFrame(); 
 }

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 2022-11-30
    • 1970-01-01
    • 2013-07-20
    • 2017-03-29
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多