【问题标题】:error: "null" was not declared in this scope错误:未在此范围内声明“null”
【发布时间】:2014-12-08 17:26:07
【问题描述】:

我正在尝试调试上述错误。我在下面提供我的代码以帮助解决问题:

#include <string>
using namespace std;

class Packet
{
    int index;
    string content;

    public:
        Packet()
        {
            index = null;
            content = null;
        }

        Packet(int i, string data)
        {
            index = i;
            content = data;
        }

        void setIndex(int i) {index = i;}
        void setContent(string input) {content = input;}
        int getIndex() {return index;}
        string getContent() {return content;}
};

我尝试添加#include &lt;cstdlib&gt;(来自here)、#include &lt;cstddef&gt;,并手动定义null。什么都没有成功。如果您能阐明我所缺少的内容,将不胜感激。

【问题讨论】:

  • 您是否正在寻找 C++ nullptr 或 C NULL?
  • @K-ballo,不完全是,因为这些被分配给 int 和 string。
  • null 不是 C++ 关键字。

标签: c++ pointers null nodes singly-linked-list


【解决方案1】:

你可能想写:

    Packet() : index(0), content("") { }
    Packet(int i, string data) : index(i), content(data) { }

null 这个词没有被 C++ 标准保留。 NULL 是一个空指针常量,但不适合作为 int 的初始值设定项(您可能会侥幸成功,但这相当于写 0,在您的意思是使用 NULL 是不好的做法0 或 '\0'),用 NULL 初始化 string 也不合适。

你甚至可以使用:

    Packet(int i = 0, string data = "") : index(i), content(data) { }

拥有一个带有默认参数的构造函数。

【讨论】:

    【解决方案2】:

    我建议您阅读 C++ 中的内存管理。

    获取您的代码的小样本:

    class Packet
    {
        int index;
        string content;
    
        public:
            Packet()
            {
                index = null;
                content = null;
            }
    

    index 和 content 不是指针或引用,它们是值;将null 分配给他们是没有意义的。

    int index 声明了一个名为 index 的整型变量; 仅可以取值是在您的平台上由int 表示的范围内的数字(很可能是 32 位有符号数字)。

    同样,string content 声明了一个字符串对象,并带有用于保存它的内存。它必须被构造(在这种情况下是在Packet 类构造函数中)。尝试为其分配“null”值是没有意义的。

    我猜你习惯于编写 Java 代码,其中对象变量始终是引用,因此可以分配 null;这在 C++ 中是不正确的。

    'null' 的概念是指向空的指针;在 C++ 中,这是写成 nullptr(在 C++11 中)或 0(在早期的 C++ 标准中);在这些早期版本中,#define NULL 0 很常见。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2013-03-05
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      相关资源
      最近更新 更多