c++中的单例错误

Error Singleton in c++

本文关键字:错误 单例 c++      更新时间:2023-10-16

有什么问题?

#include <iostream>
using namespace std;
class Singleton
{
    public:
        void HelloWorld();
        static Singleton* Instance(){
        if (instanza == 0)
            instanza = new Singleton ;
        return instanza;
        }
    protected:
        Singleton();
    private:
        static Singleton* instanza;
};

Singleton* Singleton:: instanza = 0;
void Singleton::HelloWorld()
{
    cout << "Hello World!";
}
int main()
{
    Singleton *p = Singleton ::Instance();
    p->HelloWorld();
    delete p;
}

g++ -Wall -o "singleton" "singleton.cpp" (nella cartella:/home/tarek/Scrivania/Nuovi codici)/tmp/ccL8BxOT。0: nella funzione "Singleton::Instance()":Singleton .cpp:(.text._ZN9Singleton8InstanceEv[_ZN9Singleton8InstanceEv]+0x24):验证non definito a "Singleton::Singleton()"Collect2: error: ld returned 1 exit statusCompilazione fallita .

你的构造函数只是声明没有定义。

改为

...
 protected:
        Singleton() {};//add further implementation here
        //Singleton() = default; for c++11
...

和它应该工作

您需要将构造函数定义为

Singleton::Singleton() 
{
}