在C++中调用单一实例对象的正确方法

Correct way to call a singleton object in C++

本文关键字:方法 对象 实例 C++ 调用 单一      更新时间:2023-10-16

我根据这里发布的点击量构建了一个单例类。

我用一个getMessage()函数扩展了它,它将检索内部字典消息 - 字典只需要在整个应用程序上加载一次,这就是单例的原因。

我的代码:

辛格尔顿.hpp

class Singleton {
public:
    static Singleton& getInstance();
    std::string getMessage(std::string code);
private:
    Singleton() {}; 
    Singleton(Singleton const&) = delete;
    void operator=(Singleton const&) = delete;
};

辛格尔顿.cpp

Singleton& Singleton::getInstance()
{
    static Singleton instance;
    return instance;
}

std::string Singleton::getMessage(std::string code)
{
    /// Do something
    return "Code example.";
}

和主要代码:

主.cpp

int main()
{
        Singleton* my_singleton;
        my_singleton = Singleton::getInstance(); **<-- ERROR HERE**
        cout << my_singleton->getMessage("a"); << endl
}

主要给了我一个错误:Cannot convert 'Singleton' to 'Singleton*' in assignment

"实例化"单例并使用 getMessage 函数的正确方法是什么。

非常感谢您的帮助...

只是像这样调用函数怎么样:

Singleton::getInstance().getMessage("a");

而不是将其分配给变量。

您希望存储对单例的引用,而不是指针。

Singleton& my_singleton = Singleton::getInstance();