2013-11-26 26 views
0

我目前正在使用舊VS2008的一個學校項目,基本上很少或沒有錯誤的幫助。無論如何,我正在努力學習Singeltons,並試圖按照基本原則進行創作。但突然間,我從錯誤中獲得了答案。我是盲人還是我做錯了什麼? 錯誤:VS 2008中未聲明的標識符 - Singelton(非常基本)

1>.\Source\Singelton.cpp(3) : error C2065: 'NULL' : undeclared identifier 
1>.\Source\Singelton.cpp(12) : error C2065: 'NULL' : undeclared identifier 
1>.\Source\Singelton.cpp(21) : error C2065: 'NULL' : undeclared identifier 
1>.\Source\Singelton.cpp(26) : error C2065: 'value' : undeclared identifier 
1>.\Source\Singelton.cpp(30) : error C2065: 'value' : undeclared identifier 

完整代碼: 頭:

#ifndef __SINGELTON_H__ 
#define __SINGELTON_H__ 


class Singelton 
{ 
private: 
    static Singelton* instance; 
    Singelton(); 
    int value; 
public: 
    ~Singelton(); 
    int get_value(); 
    void set_value(int v); 
    static Singelton* getInstance(); 

}; 
#endif 

的.cpp

#include "Singelton.h" 

Singelton* Singelton::instance = NULL; 

Singelton::Singelton() 
{ 
    value=0; 
} 

Singelton* Singelton::getInstance() 
{ 
    if (instance == NULL) 
    { 
     instance = new Singelton(); 
    } 
    return instance; 
} 

Singelton::~Singelton() 
{ 
    instance = NULL; 
} 

int get_value() 
{ 
    return value; 
} 
void set_value(int v) 
{ 
    value=v; 
} 
+1

添加'#include ' –

+1

並將範圍添加到get_value和set_value('int Singleton :: get_value()')。 –

+0

非常感謝!那就是訣竅 – 413X

回答

0
error C2065: 'NULL' : undeclared identifier 

您還沒有<cstddef>,它定義NULL

error C2065: 'value' : undeclared identifier 

你忘了包括類名,當你定義的成員函數,所以不是宣佈新的非成員函數:

int Singelton::get_value() 
{// ^^^^^^^^^^^ 
    return value; 
} 

你也應該拼「單身」正確,避免reserved names__SINGELTON_H__ 。希望你很快就會被教會爲什麼單身人士是一個不好的主意,而在C++中則更是如此。看看here,萬一你的老師忘記了這一點。