这个错误是因为在 lambda 表达式中使用了类成员变量 m_sprLineArr,而 lambda 表达式是一个嵌套类型,无法直接访问非静态成员变量。

要修复这个错误,可以将 m_sprLineArr 传递给 lambda 表达式作为参数,或者使用类成员变量的引用捕获方式。

  1. 传递参数方式修复: 在 lambda 表达式的参数列表中添加 m_sprLineArr,并在 lambda 表达式中使用传入的参数。修改后的代码如下:
scheduleOnce([&](float dt, const std::vector<Sprite*>& sprLineArr) {
    auto scaleTo = CCScaleTo::create(0.5f, 1.0f);
    sprLineArr[0]->runAction(scaleTo);
}, 5.0f, "progressBar", m_sprLineArr);
  1. 引用捕获方式修复: 在 lambda 表达式的捕获列表中使用引用捕获方式来捕获 m_sprLineArr。修改后的代码如下:
scheduleOnce([&](float dt) {
    auto scaleTo = CCScaleTo::create(0.5f, 1.0f);
    m_sprLineArr[0]->runAction(scaleTo);
}, 5.0f, "progressBar");

注意:使用引用捕获方式时需要确保 m_sprLineArr 在 lambda 表达式执行时仍然有效,避免悬空引用的问题。

scheduleOnce& thisfloat dt auto scaleTo = CCScaleTocreate05f 10f; m_sprLineArr0-runActionscaleTo; 50f progressBar;上面代码报错如下error expression failed to parseerror user expression 011 u

原文地址: https://www.cveoy.top/t/topic/jewW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录