事件使用功能指针订阅:项未评估为2个参数的函数
这是响应鼠标运动的相机类。
class Camera {
public:
void processMouseMovement(double xPos, double yPos) {
//rotating camera
}
};
移动鼠标时,将调用Mouseevent。 MouseCallbacks是订阅Mouseevent的所有功能的列表。
#include<vector>
#include"Camera.h"
typedef void(__thiscall Camera::* mouseFunc)(double xPos, double yPos);
class InputSystem {
public:
static std::vector<mouseFunc> mouseCallbacks;
static void mouseEvent(double xPos, double yPos) {
//some processing
for (auto func : mouseCallbacks) {
func(xPos, yPos); //error here
}
}
};
//subscribe camera processMouseMovement to mouseEvent
std::vector<mouseFunc> InputSystem::mouseCallbacks{ &Camera::processMouseMovement };
主函数
#include<iostream>
#include"InputSystem.h"
Camera camera; //global camera object
int main() {
//simulating mouse event
InputSystem::mouseEvent(1.0f, 2.0f);
return 0;
}
此代码给我汇编错误。
term does not evaluate to a function taking 2 arguments
如何从功能指针func
调用我的函数? 有什么更好的方法可以使用功能指针存储和调用回调?
谢谢
This is Camera class which responds to mouse movements.
class Camera {
public:
void processMouseMovement(double xPos, double yPos) {
//rotating camera
}
};
mouseEvent will be called when mouse is moved.
mouseCallbacks is a list of all functions that subscribe to mouseEvent.
#include<vector>
#include"Camera.h"
typedef void(__thiscall Camera::* mouseFunc)(double xPos, double yPos);
class InputSystem {
public:
static std::vector<mouseFunc> mouseCallbacks;
static void mouseEvent(double xPos, double yPos) {
//some processing
for (auto func : mouseCallbacks) {
func(xPos, yPos); //error here
}
}
};
//subscribe camera processMouseMovement to mouseEvent
std::vector<mouseFunc> InputSystem::mouseCallbacks{ &Camera::processMouseMovement };
Main funtion
#include<iostream>
#include"InputSystem.h"
Camera camera; //global camera object
int main() {
//simulating mouse event
InputSystem::mouseEvent(1.0f, 2.0f);
return 0;
}
This code gives me a compilation error.
term does not evaluate to a function taking 2 arguments
How can I call my function from function pointer func
?
Is there any better way to store and call callbacks using function pointers?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论