C++ - 如何从同一个类的静态函数访问一个类的私有成员?

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)

Som*_*ude 5

静态成员函数是类的一部分,并且没有与之关联的对象实例(换句话说,this静态成员函数中没有指针)。为了能够访问非静态成员变量,您需要该类的实际实例。

使用旧的 C 库设置回调时的常见解决方案是使用某种用户数据指针,并将其分配给类的实例。幸运的是,GLFW 库有这样一个指针,您可以使用.