0

重複の可能性:フィールドを持つ
C++
静的メソッドで静的メンバーを定義する

Web でのシングルトン実装に関する以下のコードを見つけたので、試してみることにしました。

#include <iostream>

class Singleton
{
    Singleton(){}
    static Singleton *s_instance;

public:
    static Singleton* getInstance()
    {
        if(!s_instance)
            s_instance = new Singleton();

        return s_instance;
    }
};

int main()
{
    Singleton::getInstance();
    return(0);
}

それはかなりまっすぐに見えます。しかし、Visual Studio でビルドすると、リンカー エラー メッセージが表示されます。

main.obj : error LNK2001: unresolved external symbol "private: static class Singleton
* Singleton::s_instance" (?s_instance@Singleton@@0PAV1@A)
C:\Users\boll\Documents\Visual Studio 2010\Projects\hello_world\Debug\hello_world.exe :
fatal error LNK1120: 1 unresolved externals'

s_instanceこの場合、' ' が解決されないのはなぜですか?

4

1 に答える 1

0

事前に初期化しておくべきだと思いますs_instance=NULL。次のリンクが表示されます: http://www.codeproject.com/Articles/1921/Singleton-Pattern-its-implementation-with-C

于 2012-09-25T01:54:13.077 に答える