Я пытаюсь изучить c++. Я написал файл "Singleton.h" следующим образом:
class Singleton
{
private:
static Singleton* m_this;
Singleton();
public:
static Singleton* getInstance(){
return m_this;
}
virtual ~Singleton();
};
мой файл Singleton.cpp:
#include "StdAfx.h"
#include "Singleton.h"
Singleton::Singleton(){}
Singleton::~Singleton(){}
Я вызываю мой основной метод, чтобы получить метод getInstance следующим образом:
Singleton* s = NULL;
s = Singleton.getInstance();
Но, я получаю ошибку компиляции:
error C2275: 'Singleton' : illegal use of this type as an expression
Вы знаете, почему?
s = Singleton::getInstance();
Нет .
, но ::
(оператор разрешения области) для статических методов.
Оператор области ::
вместо .
Кроме того, вы получите сообщение об ошибке, вам нужно добавить
Singleton* Singleton::m_this;
to Singleton.cpp
Но предпочтительно вместо этого использовать namespace
вам следует позвонить, используя Singleton::
like
Singleton* s = NULL;
s = Singleton::getInstance();
использовать оператор разрешения области действия
s = Singleton::getInstance();
virtual ~Singleton();
???new Singleton
дляm_this
до того, какgetInstance()
вернется.