gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:27 25 4
gpt4 key购买 nike

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

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

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

[&](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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com