В настоящее время я работаю над школьным проектом, который использует старый VS2008, практически без помощи ошибок. В любом случае, я пытаюсь узнать о Singeltons и пытаюсь создать как можно более базовую. Но вдруг из ниоткуда я получаю ошибки. Я что, слепой или что я делаю неправильно? Ошибка:
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
Полный код: header:
#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;
}
error C2065: 'NULL' : undeclared identifier
Вы не включили <cstddef>
, который определяет NULL
.
error C2065: 'value' : undeclared identifier
Вы забыли включить имя класса, когда вы определили функции-члены, поэтому вместо этого объявили новые функции, не являющиеся членами:
int Singelton::get_value()
{// ^^^^^^^^^^^
return value;
}
Вы также должны правильно __SINGELTON_H__
"singleton" и избегать зарезервированных имен, таких как __SINGELTON_H__
. Надеюсь, вас скоро научат, почему одиночные игры - плохая идея в целом, и вдвойне в C++. Посмотрите здесь, если ваш учитель забудет об этом.
#include <stdlib.h>
int Singleton::get_value()
).