waa*_*919 0 c++ static class callback
我拥有的:
所以我有一个带有私有成员的类和一个静态函数。该函数必须真的是静态的,我无法改变它。
我想要的是:
我需要从静态函数访问私有成员。有任何想法吗?:)
请检查以下代码:
class Base
{
private:
int m_member;
public:
Base() : m_member(0) {};
~Base() {};
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); /* This must really be static because it is coming from C */
};
void Base::key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
m_member = 1; // <---- illegal reference to non-static member 'Base::m_member'
}
Run Code Online (Sandbox Code Playgroud)
静态成员函数是类的一部分,并且没有与之关联的对象实例(换句话说,this静态成员函数中没有指针)。为了能够访问非静态成员变量,您需要该类的实际实例。
使用旧的 C 库设置回调时的常见解决方案是使用某种用户数据指针,并将其分配给类的实例。幸运的是,GLFW 库有这样一个指针,您可以使用.