"pointer name" 没有命名类型错误
"pointer name" does not name a type error
我是 C++ 新手。我在标记为 //this shows error
的语句上出错,但它的替代语句(标记为 but this works
)出现错误。有人可以解释一下吗?
#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
Node *next;
int data;
};
class Que
{
public:
//this shows error
/*
Node *front, *rear;
front = NULL;
rear = NULL;
*/
//but this works
Node *front = NULL, *rear = NULL;
};
这些:
front = NULL;
rear = NULL;
是作业 statements。还有这个:
Node *front = NULL, *rear = NULL;
是使用in-class initializers的声明(定义、初始化)语句。
赋值语句不允许出现在class声明体中,而初始化语句是。
您需要一个函数或 class 构造函数来 初始化 class 对象:
class Node
{
public:
Node *next;
int data;
};
class Que
{
public:
Que() {
Node *front, *rear;
front = NULL;
rear = NULL;
}
};
在上述代码中,front
和 rear
现在有一个存储空间 class,因为它们在构造函数中,其作用类似于一个函数。
为了更好地说明,您可以使用以下代码:
class test {
public:
int x; // declaring a variable outside of a constructor or function
x = 10; // initialization is not allowed here
}
#define NULL nullptr
class Node
{
public:
Node* next;
int data;
};
class Que1 {
public: //Method 1 - initializer list
Node* front{ NULL }, * rear{ NULL };
};
class Que2 {
public: //Method 2 - assignment operator for initialization
Node* front = NULL, * rear = NULL;
};
class Que3 {
public: //Method 3 - initializer list at constructor
Node* front, * rear;
Que3() : front{ NULL }, rear{ NULL }
{}
};
class Que4 {
public: //Method 4 - assignment after member intialization/construction
Node* front, * rear;
Que4()
{
front = NULL;
rear = NULL;
}
};
您的作业不在函数体中。由于您尝试初始化,我考虑过显示不同的语法。
方法 1 是首选方法。
我是 C++ 新手。我在标记为 //this shows error
的语句上出错,但它的替代语句(标记为 but this works
)出现错误。有人可以解释一下吗?
#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
Node *next;
int data;
};
class Que
{
public:
//this shows error
/*
Node *front, *rear;
front = NULL;
rear = NULL;
*/
//but this works
Node *front = NULL, *rear = NULL;
};
这些:
front = NULL;
rear = NULL;
是作业 statements。还有这个:
Node *front = NULL, *rear = NULL;
是使用in-class initializers的声明(定义、初始化)语句。
赋值语句不允许出现在class声明体中,而初始化语句是。
您需要一个函数或 class 构造函数来 初始化 class 对象:
class Node
{
public:
Node *next;
int data;
};
class Que
{
public:
Que() {
Node *front, *rear;
front = NULL;
rear = NULL;
}
};
在上述代码中,front
和 rear
现在有一个存储空间 class,因为它们在构造函数中,其作用类似于一个函数。
为了更好地说明,您可以使用以下代码:
class test {
public:
int x; // declaring a variable outside of a constructor or function
x = 10; // initialization is not allowed here
}
#define NULL nullptr
class Node
{
public:
Node* next;
int data;
};
class Que1 {
public: //Method 1 - initializer list
Node* front{ NULL }, * rear{ NULL };
};
class Que2 {
public: //Method 2 - assignment operator for initialization
Node* front = NULL, * rear = NULL;
};
class Que3 {
public: //Method 3 - initializer list at constructor
Node* front, * rear;
Que3() : front{ NULL }, rear{ NULL }
{}
};
class Que4 {
public: //Method 4 - assignment after member intialization/construction
Node* front, * rear;
Que4()
{
front = NULL;
rear = NULL;
}
};
您的作业不在函数体中。由于您尝试初始化,我考虑过显示不同的语法。 方法 1 是首选方法。