-2

静的メソッドからクラス Foo の最初に作成されたインスタンスを返したい (すべてのプログラムのライフサイクル中に作成されるインスタンスは実際には 1 つです)。サンプルコード:

//.h

#pragma once
class Foo
{
    static Foo* _firstInstance;
public:
    Foo();
    ~Foo();
    static Foo* GetFirstFoo();
};

//.cpp
#include "stdafx.h"
#include "Foo.h"

Foo::Foo()
{
    _firstInstance = this;
}


Foo::~Foo()
{
}

Foo* Foo::GetFirstFoo()
{
    return _firstInstance;
}

しかし、次のエラーが発生しました:

Error   1   error LNK2001: unresolved external symbol "private: static class Foo * Foo::_firstInstance" (?_firstInstance@Foo@@0PAV1@A)  c:\Users\Brans\documents\visual studio 2013\Projects\testSt\testSt\Foo.obj  testSt

なにが問題ですか?私はC ++の初心者ですが、静的メソッドからクラスインスタンスコンストラクターを問題なく作成したことを覚えています。

4

1 に答える 1

2

.cpp静的メンバーもファイルで定義する必要があります。

Foo* Foo::_firstInstance;
于 2013-10-27T11:42:39.030 に答える