2014-11-17 6 views
1

Я хочу иметь один экземпляр класса C в моей программе, и я определил метод singleton get_instance следующим образом.Как создать экземпляр singleton

class C { 
    static map<int, map<int, int> > t; 
    public: 
    static C& get_instance() { 
     static C instance; 
     return instance; 
    } 
    private: 
    C() {}; 
}; 

, и я попытался получить расстояние, используя этот метод.

static C& rt = C.get_instance(); 

Однако я получаю сообщение об ошибке

src/C.cpp:115:41: error: expected primary-expression before ‘.’ token 
static C& rt = C.get_instance(); 

я делаю что-то не так?

одноплодной дизайн от C++ Singleton design pattern

ответ

4

Вы должны написать C::get_instance().

+0

спасибо. Это потому, что это статический метод? – user2418202

+1

@ пользователь2418202 точно. – timrau

+2

@ user2418202: для членов 'static' вы эффективно используете имя класса в качестве механизма определения области видимости (сродни пространству имен) и должны использоваться те же обозначения' :: '; тогда как для нестатических членов вы фактически делаете что-то с конкретным экземпляром объекта времени выполнения класса (а именно '* this'), и' .' используется для этого .... –

Смежные вопросы