将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!";
}
}
我是如何尝试调用函数&#34; ShowMessage()&#34; 但在VS2010上显示此错误:错误C2143:语法错误:缺少&#39 ;;&#39;之前&#39;。&#39;
// Incorrect syntax
MySpace::Singleton.GetInstance().ShowMessage();
调用ShowMessage()的正确语法是什么?
答案 0 :(得分:5)
MySpace::Singleton
是一个类,因此您需要使用范围运算符::
而不是.
来访问GetInstance
:
MySpace::Singleton::GetInstance().ShowMessage();