将基指针指向派生实例 我正在做C++的最后一个项目,我的教授指定我们必须有三个类文件来链接列表。p>
第一个命名的LinkedList包含head和tail,以及两个重载运算符,在这两个运算符中,我们必须将列表用作数组,并在数组末尾添加一个元素 第二个命名节点包含两个通用值Seat和Row 第三个也是最后一个命名的RNode保存列表中下一个、上一个点的值以及保留状态 我的问题是,在使用LinkedList.cpp定义所有函数时,我无法确定如何将节点设置为头部,因为类型不同。我可以使用tempNode.setNext(Head);,设置列表中的下一个节点;。但是当我尝试执行tempNode=tempNode.getNext()时,它说类型不同。对我来说,什么是一个简单的方法来完成这项工作?请记住,我是一名初学C++的新手;p> 这是我的密码 这应该使用链表作为数组,并返回指向与传入的整数相关的节点的指针将基指针指向派生实例 我正在做C++的最后一个项目,我的教授指定我们必须有三个类文件来链接列表。p>,c++,inheritance,C++,Inheritance,第一个命名的LinkedList包含head和tail,以及两个重载运算符,在这两个运算符中,我们必须将列表用作数组,并在数组末尾添加一个元素 第二个命名节点包含两个通用值Seat和Row 第三个也是最后一个命名的RNode保存列表中下一个、上一个点的值以及保留状态 我的问题是,在使用LinkedList.cpp定义所有函数时,我无法确定如何将节点设置为头部,因为类型不同。我可以使用tempNode.setNext(Head);,设置列表中的下一个节点;。但是当我尝试执行tempNode=tem
int& LinkedList::operator[] (const int &middle) {
RNode *tempNode;
tempNode->setNext(Head);
tempNode = tempNode->getNext(); // Error here
for (int i = 0; i < middle; i++) {
}
}
预订节点类
#ifndef RNODE_H_INCLUDED
#define RNODE_H_INCLUDED
#include "Node.h"
using namespace std;
class RNode : public Node {
private:
Node* Next; // Next node pointer
Node* Prev; // Previous node pointer
bool reservationStatus(); // Reservation status
public:
// Constructors
RNode(); // Sets default values
RNode(Node*, Node*, bool); // Takes values passed in and sets them
// Overloaded operators
friend ostream &operator << (ostream &, Node*); // Prints out correct symbol based on reservation status
friend istream &operator >> (istream &, Node*); // Prints correct symbol based on reservation status .
// Next
void setNext(Node*); // Sets next node in list
Node* getNext(); // Returns next node in list
// Prev
void setPrev(Node*); // Sets previous node in list
Node* getPrev(); // Returns previous node in list
// Reservation Status
void setReservationStatus(bool); // Sets reservation status of a current node
bool getReservationStatus(); // Returns reservation status
};
#endif // RNODE_H_INCLUDED
#ifndef NODE_H_INCLUDED
#define NODE_H_INCLUDED
class Node {
protected:
int row;
int seat;
public:
// Constructors
Node(); // Sets default values
Node(int, int); // Sets row and seat to values passed in
// Row
void setRow(int); // Sets row for current node
int getRow(); // Gets row for current node
// Seats
void setSeat(int); // Sets seat for current node
int getSeat(); // Gets seat for current node
};
#endif // NODE_H_INCLUDED
总之,如何匹配类型,以便将RNode tempNode设置为等于一个节点?这是非常混乱的,我真的找不到一个很好的解释如何解决这个问题
请记住,根据我的指示,我必须以这种方式创建类。如果由我决定,我会将RNode和Node类组合起来
提前谢谢 由于
RNode
派生自节点
,因此可以向下转换(使用动态转换
或静态转换
)。虽然我不明白为什么它是另一种类型,但这让我觉得您的designSide有问题。请注意。@unholyseep这是正确的答案。我问了我的教授,他提到我可以在LinkedList类中单独使用RNode,而不必沮丧。我的设计是错误的。谢谢你的帮助!
#ifndef NODE_H_INCLUDED
#define NODE_H_INCLUDED
class Node {
protected:
int row;
int seat;
public:
// Constructors
Node(); // Sets default values
Node(int, int); // Sets row and seat to values passed in
// Row
void setRow(int); // Sets row for current node
int getRow(); // Gets row for current node
// Seats
void setSeat(int); // Sets seat for current node
int getSeat(); // Gets seat for current node
};
#endif // NODE_H_INCLUDED