我正在从头开始排队,我有一个节点类和一个队列类。我的 Node类有两个受保护的变量(Info,Next),我想在创建一个新的Node实例时从我的队列类访问这些变量,在我的中我的Enqueue方法的队列类,我需要创建一个新的Node实例并访问这些变量,所以我自然会做....
Node foo = new Node;
问题是,当我去做像......这样的事情时。
Node.Next = Rear;
我收到错误,无法解析标识符Next或Info。 但是,如果我在队列类中声明我的方法之外的新实例并尝试访问Node的变量,我可以。只有当我在另一个类中的方法内部时,我才能这样做。我是c ++的新手,来自java背景。我在这里忽略了一个特定的c ++规则吗?提前谢谢!
这里要求的更多上下文是Node
的头文件#ifndef CLINICNODE_H
#define CLINICNODE_H
#include "ClinicPatient.h"
class ClinicNode {
public:
ClinicNode();
void Modify(ClinicNode ThisNode);
void InputData(int x);
virtual string toString();
protected:
ClinicPatient Info;
ClinicNode Next;
};
#endif /* CLINICNODE_H */
这是ClinicNode的构造函数
#include "ClinicNode.h"
ClinicNode::ClinicNode() {
Info = ClinicPatient();
Next = NULL;
}
这是我的ClinicQueue Header
#ifndef CLINICQUEUE_H
#define CLINICQUEUE_H
#include "ClinicNode.h"
class ClinicQueue {
public:
ClinicQueue();
void addRear(ClinicPatient ThisPatient);
ClinicPatient removeFront();
void Modify(int Position, ClinicPatient ThisPatient);
void clearQueue();
ClinicPatient getInfo(int Position);
ClinicNode getNode(int Position);
int getSize();
bool isEmpty();
// ClinicPatient[] toArray();
protected:
ClinicNode Front;
ClinicNode Rear;
int Length;
};
#endif /* CLINICQUEUE_H */
以下是ClinicQueue.cpp的片段
#include "ClinicQueue.h"
ClinicQueue::ClinicQueue() {
Front = NULL;
Rear = NULL;
Length = 0;
}
void ClinicQueue::addRear(ClinicPatient ThisPatient) {
ClinicNode newNode = new ClinicNode;
newNode.Info.Modify(ThisPatient);
newNode.Next = Rear;
Rear = newNode;
Length++;
if(Length == 1) {
Front = Rear;
}
}
在这个例子中,我尝试创建一个名为newNode的ClinicNode。从那里我尝试访问newNode的变量Info和Next,但编译器指出Info和Next是未解析的标识符。