0

我目前正在开展一个学校项目,该项目使用旧的 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

完整代码:标题:

#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;
}
4

1 回答 1

0
error C2065: 'NULL' : undeclared identifier

你还没有包括<cstddef>,它定义了NULL.

error C2065: 'value' : undeclared identifier

您在定义成员函数时忘记包含类名,因此改为声明新的非成员函数:

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

您还应该正确拼写“singleton”并避免保留名称,例如__SINGELTON_H__. 希望您很快就会明白为什么单例通常是一个坏主意,而且在 C++ 中更是如此。看看这里,以防你的老师忘记覆盖它。

于 2013-11-26T15:12:40.607 回答