我正在尝试学习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(){}
我在main方法中调用getInstance方法,如下所示:
Singleton* s = NULL;
s = Singleton.getInstance();
但是,我收到编译错误:
error C2275: 'Singleton' : illegal use of this type as an expression
你知道为什么吗?
答案 0 :(得分:0)
使用范围解析运算符
s = Singleton::getInstance();
答案 1 :(得分:0)
s = Singleton::getInstance();
静态方法不是.
,而是::
(范围解析运算符)。
答案 2 :(得分:0)
你应该使用Singleton::
来打电话
Singleton* s = NULL;
s = Singleton::getInstance();
答案 3 :(得分:0)
范围运算符::
代替.
此外,您将收到链接错误,您需要添加
Singleton* Singleton::m_this;
到Singleton.cpp
但最好使用namespace
代替