2014-02-10 108 views
-1

在此处使用C++。我正在尝试开发一个特定的程序,从它的前序遍历中创建一个BST。以下是第一批代码:错误:从'Node *'无效转换为'int'

class Node { 

private: 
    int val;  
    Node *left;  
    Node *right;  

public: 
    Node() : val(0), left(NULL), right(NULL) {}   
    Node (int v) : val(v), left(NULL), right(NULL) {} 
    Node (int v, Node *l, Node *r) : val(v), left(l), right(r) {} 
    Node& operator = (Node& rhs) {    
    if (&rhs == this) return *this; 
    val = rhs.val; 
    left = rhs.left; 
    right = rhs.right; 
    return *this; 
    } 

}*root; 

我已经拿出了一些功能,但这是基础知识。现在,这里的另一条代码:

Node *temp = new Node(); 

    if (preorder[trav] <= N) 
    { 
    temp = root; 
    root->goLeft(pre_ordered, traverse); 
    traverse++; 
    } 

    else 
    { 
    temp = root; 
    root->goRight(pre_order, traverse); 
    traverse++; 
    } 

然而,然后我得到“错误:从‘节点*’到‘廉政’无效转换”上线“TEMP =根”。有任何想法吗?在我看来,我设置了一个节点等于另一个节点,所以我不明白什么是错的。在网上看,发现没有什么帮助。一些类似的错误,但只是不同而已,不够有用。

我会前期,这是一所学校的作业,所以我不是在寻找直接的答案。只是提示我需要改变的地方,或者我需要看的地方会很棒!谢谢。

编辑:精确的错误是:

main.cpp:160:15: error: invalid conversion from ‘Node*’ to ‘int’ [-fpermissive] 
     temp = root; 
     ^

编辑我发现了它。我道歉。

我是愚蠢的,并没有看够硬地发现,我是重新定义“温度”作为主要功能的int值。对不起,浪费你的时间。

不能回答,因为没有足够的代表我自己的问题。

+1

给我们更多关于你的第二位代码的内容 - 至少是封闭函数。 – Elemental

+0

[Works for me](http://ideone.com/RNh8JD),一旦我修正了错误的成员名称。你能发布一个演示错误的测试用例吗? –

+1

你的代码没有声明'left'和'right'。它是'left_child'和'right_child'吗?另外,为什么要创建一个新的'Node',然后通过分配'root'来丢失它? – crashmstr

回答

0

您已声明不匹配你的代码中使用哪些成员的姓名。例如,您宣布int value而是通过名称引用它val

修正代码编译为:

class Node { 

private: 
    int val;  
    Node *left;   
    Node *right;  

public: 
    Node() : val(0), left(NULL), right(NULL) {}   
    Node (int v) : val(v), left(NULL), right(NULL) {} 
    Node (int v, Node *l, Node *r) : val(v), left(l), right(r) {} 
    Node& operator = (Node& rhs) {    
    if (&rhs == this) return *this; 
    val = rhs.val; 
    left = rhs.left; 
    right = rhs.right; 
    return *this; 
    } 

}*root; 

int main() 
{ 
    Node *temp = new Node(); 
    temp = root; 
    return 0; 
} 

我知道你不想直接回答,但它似乎像一个实际的错误,不是缺乏理解。

+1

但问题中的代码没有显示OP描述的问题。 –

+0

@KeithThompson如果op更新他的问题,我的答案不再有效,我会更新它。 – Avery3R

+0

感谢您的提示,但是,这不是问题。现在修复代码。尽管如此,谢谢! – user3294283

相关问题