我看到下面的代碼:
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