Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:";空";未在此范围中声明_C++_Pointers_Null_Nodes_Singly Linked List - Fatal编程技术网

C++ 错误:";空";未在此范围中声明

C++ 错误:";空";未在此范围中声明,c++,pointers,null,nodes,singly-linked-list,C++,Pointers,Null,Nodes,Singly Linked List,我在调试上述错误时束手无策。我在下面提供我的代码以协助故障排除过程: #include <string> using namespace std; class Packet { int index; string content; public: Packet() { index = null; content = null; } Packet

我在调试上述错误时束手无策。我在下面提供我的代码以协助故障排除过程:

#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;}
};
#包括
使用名称空间std;
类包
{
整数指数;
字符串内容;
公众:
数据包()
{
索引=空;
内容=空;
}
数据包(整数i,字符串数据)
{
指数=i;
内容=数据;
}
void setIndex(inti){index=i;}
void setContent(字符串输入){content=input;}
int getIndex(){return index;}
字符串getContent(){return content;}
};

我尝试过添加
#include
(from),
#include
,并手动定义null。什么都没有成功。如果你能解释我所缺少的东西,我将不胜感激。

你可能想写:

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

“代码>空NU/COD>不由C++标准保留。code>NULL是一个NULL指针常量,但不适合作为

int
的初始值设定项(您可能可以不使用它,但它相当于写入0,在您指的是
0
'\0'
的地方使用
NULL
是一种不好的做法),而且用
NULL
初始化
字符串也不太合适

您甚至可以使用:

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

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

< P>我建议您阅读C++中的内存管理。< /P> 要获取代码的小样本,请执行以下操作:

class Packet
{
    int index;
    string content;

    public:
        Packet()
        {
            index = null;
            content = null;
        }
索引
内容
不是指针或引用,而是值;将
null
分配给它们是没有意义的

int-index
声明一个名为index的整数变量;它可以接受的值仅为平台上可由
int
表示的范围内的数字(最有可能是32位有符号数字)

类似地,
string content
声明一个string对象,并使用内存保存它。它必须被构造(在这种情况下是在
数据包
类构造函数中)。尝试为其分配“null”值是没有意义的

我猜您已经习惯于编写Java代码,其中对象变量总是引用,因此可以赋值为
null
;这在C++中是不正确的。
“null”的概念是一个不指向任何东西的指针;在C++中,这是写代码“代码> NulLPTR <代码>(在C++ 11)或<代码> 0 > /代码>(在早期C++标准中);在早期版本中,代码> >定义空0</CUTE是常见的。< /P>你是否在寻找C++ <代码> Null pTr> <代码>或C<代码> null < /代码>?@ k-巴罗,不完全是因为这些被分配给<代码> int <代码> > <代码>字符串 > <代码> null <代码>不是C++关键字。