我看到下面的代码:
http://sourcemaking.com/design_patterns/singleton/cpp/1静态成员变量可以调用非静态成员函数吗?
class GlobalClass
{
private:
int m_value;
static GlobalClass *s_instance;
GlobalClass(int v = 0)
{
m_value = v;
}
public:
int get_value()
{
return m_value;
}
void set_value(int v)
{
m_value = v;
}
static GlobalClass *instance()
{
if (!s_instance)
s_instance = new GlobalClass;
return s_instance;
}
};
GlobalClass *GlobalClass::s_instance = 0;
void foo(void)
{
GlobalClass::instance()->set_value(1); // static variable calls non-static functions
cout << "foo: global_ptr is " << GlobalClass::instance()->get_value() << '\n';
}
据我所知(请纠正我,如果我错了这里),
静态函数只能访问(读/写)静态成员变量
非静态函数可以访问(写入/读取)静态成员变量
基于上面的示例,似乎静态变量可以访问非静态函数。
这是正确的吗?
静态成员函数不能访问非静态成员变量。 – q0987 2010-11-09 04:48:54
@ q0987:是的,它可以。我可以给你一个例子,但我真的希望你停下来,首先想想我的答案。学习思考软件是学习编程非常重要的一部分。 – 2010-11-09 05:05:30
以下是您的示例:http://ideone.com/gX5wF – 2010-11-09 05:10:43