我遇到了名义上的错误,但我一辈子都想不出如何解决它。我已经在互联网上搜索了一些,但在大多数情况下,我找不到任何与我遇到的问题直接相关或无法解决的问题,而且我阅读的有关匿名类的所有信息似乎都同意我写的代码。
我想做的事情的本质是;我有一个结构,我希望该结构包含一个函数指针。我遇到的问题是,当我定义结构的实例时,我试图创建一个匿名函数并将其传递给该结构。但它给我一个编译错误。
无论如何,这里是实际问题的详细信息,错误发生在这一行,
[&](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/