刚开始为一堂课学习c ++,我无法弄清楚这段代码有什么问题!我正在创建一个堆栈类,其中嵌套了一个名为node的辅助类,它充当链表。我得到的错误是在第12行,是:
Stack.cpp:在析构函数中--Stack :: ~Stack()â€: Stack.cpp:12:24:错误:请求成员âget~getNext’在((Stack *)this) - > Stack ::node’,它是非类型的类型â€堆栈::节点* A€™
这是我的代码:
#include "Stack.h"
Stack:: Stack ()
{
height = 0;
node = 0;
}
Stack:: ~Stack()
{
while(node != 0){
Node *next = *node.getNext();
delete node;
node = next;
}
node = 0;
}
这是我的头文件:
using namespace std;
class Stack
{
private:
int height;
class Node{
private:
int data;
Node* next;
public:
void setData(int x){
data = x;
}
void setNext(Node* x){
next = x;
}
int getData(){
return data;
}
Node* getNext(){
return next;
}
};
Node* node;
public:
Stack();
~Stack();
void push(int x);
int pop();
int peek();
int getHeight();
bool isEmpty();
};
答案 0 :(得分:3)
Node *next = *node.getNext();
应该是
Node *next = (*node).getNext();
由于.
运算符的优先级高于*
deference运算符。
您也可以使用:
Node *next = node->getNext();