2015-04-12 110 views
1
#include <cstdlib> 
#include <iostream> 
#include <cmath> 
#include <fstream> 
#include <string> 
using namespace std; 

class Node 
{ 
public: 
    string word; 
    Node *left; 
    Node *right; 
    Node *parent; 
    int number; 
    int balance; 
    int height; 
    Node(string x); 
    Node(string x, Node *nleft, Node *nright); 
    Node(string, Node *nparent, Node *nleft, Node *nright); 
    void setWord(string x); 
    string getWord(); 
    void setParent(Node *nparent); 
    Node getParent(); 
    void setLeft(Node *nleft); 
    Node getLeft(); 
    void setRight(Node *nright); 
    Node getRight(); 
    void setNumber(int num); 
    int getNumber(); 
}; 
Node::Node(string x){ 
    word = x; 
    parent = NULL; 
    left = NULL; 
    right = NULL; 
    number = 1; 
    balance = 0; 
    height = 0; 

} 
Node::Node(string x, Node *nleft, Node *nright){ 
    word = x; 
    parent = NULL; 
    left = nleft; 
    right = nright; 
    number = 1; 
    balance = 0; 
    height = 0; 

} 
Node::Node(string x, Node *nparent, Node *nleft, Node *nright){ 
    word = x; 
    parent = nparent; 
    left = nleft; 
    right = nright; 
    number = 1; 
    balance = 0; 
    height = 0; 
} 
void Node::setWord(string x){ 
    word = x; 
} 
string Node::getWord(){ 
    return word; 
} 
void Node::setParent(Node *nparent){ 
    parent = nparent; 
} 
Node Node::getParent(){ 
    return parent; 
} 
void Node::setLeft(Node *nleft){ 
    left = nleft; 
} 
Node::Node getLeft(){ 
    return left; 
} 
void Node::setRight(Node *nright){ 
    right = nright; 
} 
Node::Node getRight(){ 
    return right; 
} 
void Node::setNumber(int num){ 
    number = num; 
} 
int Node::getNumber(){ 
    return number; 
} 

我试图在eclipse中的AVL树中创建我的节点类,我想知道为什么错误没有可行的从'Node *'转换为'节点'为我的getters被返回安慰。什么是最好的解决和解决这个问题的原因。AVL搜索树

回答

1

你的getter方法应该返回指针(也作为小费琐碎的getter通常应const

Node* Node::getParent() const 
{ 
    return parent; 
} 

上述代码中,函数声明通过值来返回Node,但你的getter返回一个指针,这是错误告诉你的。