【发布时间】:2015-07-12 12:52:09
【问题描述】:
我有什么:
所以我有一个带有私有成员和静态函数的类。 该函数必须是静态的,我无法更改。
我想要什么:
我需要从静态函数访问私有成员。 有任何想法吗? :)
请查看以下代码:
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'
}
【问题讨论】:
-
函数必须有一个类类型的参数。在这种情况下,您可以访问作为此参数的参数传递的对象的数据成员。
-
静态成员函数中需要类实例才能访问非静态成员变量。