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++关键字。