无法从另一个类中的实例访问受保护的类变量?

时间:2017-04-12 23:36:00

标签: c++

我正在从头开始排队,我有一个节点类和一个队列类。我的 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是未解析的标识符。

0 个答案:

没有答案