Kann eine statische member-variable Aufruf nicht-statische member-Funktionen?

Sah ich den folgenden code:

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';
}

Als ich weiß (bitte korrigiert mich wenn ich hier falsch),

  1. Statische Funktionen können nur Zugriff(schreiben/Lesen) statische member-Variablen

  2. Nicht-Statische Funktionen zugreifen kann(schreiben/Lesen) statische member-Variablen

Anhand der oben genannten Beispiel, es scheint, dass eine statische variable kann Zugriff auf nicht-statische Funktionen.

Ist das richtig?

InformationsquelleAutor q0987 | 2010-11-09
Schreibe einen Kommentar