0

刚开始为一堂课学习c++,我不知道这段代码有什么问题!我正在制作一个堆栈类,其中嵌套了一个名为 node 的辅助类,它充当链表。我得到的错误在第 12 行,是:

Stack.cpp:在析构函数“Stack::~Stack()”中:Stack.cpp:12:24:错误:请求“((Stack*)this) 中的成员“getNext” ->Stack::node”,属于非类类型“Stack::Node*”

这是我的代码:

#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();
};
4

1 回答 1

3
 Node *next = *node.getNext();

应该

Node *next = (*node).getNext();

由于.运算符的优先级高于*尊重运算符。

您还可以使用:

Node *next = node->getNext();
于 2013-05-22T02:22:29.470 回答