非标准语法;使用 '&' 创建指向成员的指针错误,将成员函数分配给向量时出错
non-standard syntax; use '&' to create a pointer to member error when assigning member function to vector
我试图将玩家类的成员函数添加到函数的向量。
这是需要键盘的函数向量::键为参数。
vector<function<void(Keyboard::Key)>> KeyEvent;
然后我有玩家实施
Player::Player() {
KeyEvent.push_back(OnKey); //error: non-standard syntax; use '&' to create a pointer to member
}
void Player::OnKey(Keyboard::Key key) {
//do something with key...
}
我还有其他实例Similair可以正常工作,但与成员函数不正常。
vector<function<void()>> UpdateEvent;
UpdateEvent.push_back(HandleInputUpdate);
void HandleInputUpdate() {
for (size_t i = 0; i < pressedKeys.size(); i++) {
for (size_t e = 0; e < KeyEvent.size(); e++) {
KeyEvent[e](pressedKeys[i]);
}
}
}
是否可以在此向量中添加一个成员函数,如果没有,我该如何创建一些类似的东西?我是C 的新手,我创建了向量,因此我可以复制C#动作。这就是我要遇到问题的距离。这是一个早期概念,因为我仍然需要添加一种方法来从向量中删除功能。
OnKey
是Player
的非静态成员函数,因此需要调用Player
的实例。即使您获得了指针到会员功能语法的权利,您仍然会有确切的问题,因为没有自动绑定;换句话说, this
指向的实例不是自动用于生成可callable对象可用作为 std::function<void(Keyboard::Key)>
。
实现您想在这里做的事情的一种非常简单的方法是使用lambda:
KeyEvent.push_back([this](auto key) { OnKey(key); });
该功能中的OnKey(key);
呼叫等效于this->OnKey(key);
。
更复杂的(我认为)的方法是使用std::bind
:
using namespace std::placeholders;
KeyEvent.push_back(std::bind(&Player::OnKey, this, _1));
一般来说,在现代C 中,使用Lambdas和std::function
,用于成员功能的指针的用例变得极为罕见。
useplayer :: onkey,(仅仅具有onkey or nekey dev&amp; onkkey)不足以指针到成员的情况。
是否可以在此向量
中添加一个成员函数
否。非静态成员函数指针与非成员功能指针和静态成员函数指针有很大不同。
,如果没有,我如何创建一些类似的东西?
使用lambda表达式。在lambda表达式中,请确保捕获this
指针并在函数调用中使用它。
KeyEvent.push_back([this](Keyboard::Key key) {this->OnKey(key);});
相关文章:
- 在成员dynamic_bitset上使用 boost::from_block_range 时出错,但在本地dynamic
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在 Clang 中使用指向成员的指针时出错
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- 通过多个类访问成员时出错
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 类和成员函数模板专用化出错
- 在VS2015中访问类成员时运行时错误,但在Linux上未访问时出错
- 缺少类型说明符 - int 假定 声明静态成员后出错
- 编译特征程序时出错:错误:'seq'不是'Eigen'的成员
- 调用指向成员函数的指针时出错
- 修改另一个类的向量成员时出错
- 向模板化静态成员初始化添加和不添加'typename'都会出错
- 非标准语法;使用 '&' 创建指向成员的指针错误,将成员函数分配给向量时出错
- 推导成员函数包装器的返回类型时出错
- 编译类模板成员函数时出错
- 在 C++ 中访问泛型结构的成员会出错
- 初始化作为结构成员的函数指针时出错
- 类中的const成员出错