在命名空间里面的C ++ Singleton,我怎么能在里面调用方法?

时间:2016-02-05 10:46:02

标签: c++ design-patterns singleton

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

1 个答案:

答案 0 :(得分:5)

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

MySpace::Singleton::GetInstance().ShowMessage();