2013-10-27 59 views
-2

我想回到一個類Foo的第一次創建instannce(會有所有程序生命週期過程中產生的實際上是一個實例)從它的靜態方法。下面的示例代碼:無法從它返回一個類Foo的instannce靜態方法

//.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" ([email protected]@@[email protected]) c:\Users\Brans\documents\visual studio 2013\Projects\testSt\testSt\Foo.obj testSt 

有什麼不對?我在C++新的,但我記得我創建的類實例構造從靜態方法沒有任何問題。

+1

有數百個這種重複的,這應該由任何基本的C++引入覆蓋... –

+0

嘗試改變的名稱類吧,請不要忘記更新主題 – 4pie0

回答

2

靜態成員必須在.cpp文件中也規定:

Foo* Foo::_firstInstance; 
相關問題