是)我有的:
因此,我有一个带有私有成员的类和一个静态函数。该函数必须确实是静态的,我无法更改。
我想要的是:
我需要从静态函数访问私有成员。有任何想法吗?:)
请检查下面的代码:
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'
}
静态成员函数是该类的一部分,并且没有与之关联的对象实例(换句话说,this
静态成员函数中没有指针)。为了能够访问非静态成员变量,您需要一个类的实际实例。
使用旧的C库设置回调时,常见的解决方案是使用某种用户数据指针,并将其分配给该类的实例。对您来说幸运的是,GLFW库具有您可以使用的指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句