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
спасибо. Это потому, что это статический метод? – user2418202
@ пользователь2418202 точно. – timrau
@ user2418202: для членов 'static' вы эффективно используете имя класса в качестве механизма определения области видимости (сродни пространству имен) и должны использоваться те же обозначения' :: '; тогда как для нестатических членов вы фактически делаете что-то с конкретным экземпляром объекта времени выполнения класса (а именно '* this'), и' .' используется для этого .... –