2014-02-10 123 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

相關問題