man*_*jcm -1 c++ singleton design-patterns
将Singleton类放在命名空间中也许没有意义,但是今天一位同事问这在语法上是否正确,我不知道。
// Singleton.h
namespace MySpace
{
class Singleton
{
public:
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
void ShowMessage();
};
}
// Singleton.cpp
#include "Singleton.h"
namespace MySpace
{
void Singleton::ShowMessage()
{
std::cout << "I'm being called!";
}
}
Run Code Online (Sandbox Code Playgroud)
我如何尝试调用函数“ ShowMessage()”,但在VS2010上显示此错误:错误C2143:语法错误:缺少';' 在“。”之前
// Incorrect syntax
MySpace::Singleton.GetInstance().ShowMessage();
Run Code Online (Sandbox Code Playgroud)
调用ShowMessage()的正确语法是什么?
MySpace::Singleton是一个类,因此您需要使用范围运算符::而不是.访问GetInstance:
MySpace::Singleton::GetInstance().ShowMessage();
Run Code Online (Sandbox Code Playgroud)