匿名函数,"Parse Issue: Expected Expression"
Anonymous Functions, "Parse Issue: Expected Expression"
我收到了这个有名无实的错误,但我一辈子都想不出如何解决它。我在互联网上搜索了很多,但在大多数情况下,我找不到任何与我遇到的问题直接相关或解决问题的东西,我读到的关于匿名类的所有信息似乎都与我写的代码一致。
我想做的事情的本质是;我有一个结构,我希望该结构包含一个函数指针。我遇到的问题是,当我定义结构的实例时,我试图创建一个匿名函数并将其传递给结构。但它给了我一个编译错误。
无论如何,以下是实际问题的详细信息,错误发生在这一行,
[&](int x) { this->moveLeft(); };
上面写着"分析问题:预期表达式",并指向"]"
以下代码的
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
。
问题是Clang,Xcode/Apple使用的编译器,还不支持lambda函数。然而,从我所读到的内容来看,该功能将在未来推出。
相关文章:
- 对象声明中的模板"error: expected expression"
- 为什么我的功能在使用 goto 时会给我带来"expected primary-expression before '}' token"?
- 为什么我会"error: expected expression"?
- 错误消息"expected expression"....有人知道它为什么这么说吗?
- 如何修复此错误"expected primary expression before 'int'"?
- 使用结构和数组时的"expected primary expression before '.' token"
- 如何解决"Expected expression before " = " token"?
- 为什么我的 While 循环中不断出现"expected expression error"?
- 推导模板类重载方法的地址会导致"error: expected primary-expression before ‘decltype’"
- "error: expected primary-expression before '<=' token" 我做错了什么?
- "expected primary expression __"是什么意思?
- 模板成员函数调用 -- "error: expected primary-expression before 'int'"
- C++:"expected constant expression"
- 我的代码看起来不错。为什么我要得到"error: expected primary-expression before ')' token"?
- 如何修复"Expected Primary-expression before ')' token"错误?
- 'expected expression' 语句中的错误
- 匿名函数,"Parse Issue: Expected Expression"
- 从命令行编译时"error: expected expression",但不从 Xcode 编译时
- 使用额外括号时的"error: expected expression"
- 尝试定义嵌套模板成员函数时"expected expression"