命名空间内的C ++ Singleton,如何调用内部方法?

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()的正确语法是什么?

Tar*_*ama 5

MySpace::Singleton是一个类,因此您需要使用范围运算符::而不是.访问GetInstance

MySpace::Singleton::GetInstance().ShowMessage();
Run Code Online (Sandbox Code Playgroud)