错误:请求成员......在...中是非类型的

时间:2013-05-22 02:20:13

标签: c++ compiler-errors

刚开始为一堂课学习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();
};

1 个答案:

答案 0 :(得分:3)

 Node *next = *node.getNext();

应该是

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

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

您也可以使用:

Node *next = node->getNext();