c++ - 匿名函数, "Parse Issue: Expected Expression"

标签 c++ anonymous-function

我遇到了名义上的错误,但我一辈子都想不出如何解决它。我已经在互联网上搜索了一些,但在大多数情况下,我找不到任何与我遇到的问题直接相关或无法解决的问题,而且我阅读的有关匿名类的所有信息似乎都同意我写的代码。

我想做的事情的本质是;我有一个结构,我希望该结构包含一个函数指针。我遇到的问题是,当我定义结构的实例时,我试图创建一个匿名函数并将其传递给该结构。但它给我一个编译错误。

无论如何,这里是实际问题的详细信息,错误发生在这一行,

[&](int x) { this->moveLeft(); };

它说“Parse Issue: Expected expression”并指向']'

以下代码

Combatant::CharacterData Combatant::characters = {
    /*Name      */"SomeName",
    /*Folder    */"SomeFolder",
    /*Offense   */1.0f,
    /*Defense   */1.0f,
    /*Combos    */{
        {KeyMemory(KeyMemory::MOVE_LEFT, KeyMemory::JUMP),
            [&](int x) { this->moveLeft(); };
        },
        {KeyMemory(KeyMemory::MOVE_LEFT, KeyMemory::JUMP),
            [&](int x) { this->moveLeft(); };
        }
    }
}

CharacterData 结构由以下代码定义:

    struct Combo {
        KeyMemory controls;
        void (*execute)(int);
    };

    struct CharacterData {
        std::string name;
        std::string folder;
        float offense;
        float defense;
        Combo comboList[5];
    };

任何帮助,将不胜感激。 ^_^

最佳答案

您可能需要使用 std::function<void(int)>持有你的lambda。 (特别是因为您使用的是 [&] )。

另外,我不确定[&]在全局范围内实际上是有意义的。也许你应该传递对象来调用 moveLeft上,并使用 [] .此外,该更改可能会让您使用简单的函数指针而不是 std::function。 .

关于c++ - 匿名函数, "Parse Issue: Expected Expression",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372859/

相关文章:

matlab - 在 MATLAB 中使用匿名函数跳过输出

php - 带有匿名函数和闭包的 cURL WRITEFUNCTION 回调

python - 更实用的python

javascript - 将函数传递给 submitHandler 回调

C++ 和 Qt : is this a memory leak?(和一般问题)

c++ - Runge Kutta 圆周运动法

c++ - C++中有二次编程库吗?

c++ - sqlite中的文本挖掘

c++ - 计算对象数组的元素(大小)

c# - 具有引用参数/参数或匿名函数的 Func/Action 委托(delegate)