2013-04-16 350 views
3

例如:「*&」是什麼意思?

private: 
    Node* curr; 
public: 
    Node*& Iterator::getCurr() { 
     return curr; 
    } 

    bool Iterator::operator==(const Iterator& other) { 
     return curr == other.getCurr(); 
    } 

我收到提示在此代碼:

過客 '常量迭代' 爲 '本' 的說法 '節點* & 迭代器:: getCurr()'丟棄限定符[-fpermissive]

我該如何解決?

+0

您正在返回對指針的引用。從你的問題中很難判斷你是否想要這樣。 –

+0

很抱歉,我改變了很多問題。但是,我認爲它現在更清晰了 – Bek

+0

您將通過首先提供您遇到的錯誤的描述來解決它。否則,我們將無法提供幫助。 – Nbr44

回答

2

Node*&裝置「參照指針Node 」。您可以正常返回它。然而,訪問它可以通過兩種方式完成:‘正常’方式,其中「參考」部分將被刪除,並且保留參考的方式。後一種方式的優點是可以更改底層的curr值:

Node *&curr = iterator.getCurr(); 
curr = new Node(); // or something like that 
// iterator.curr has been changed 
0

這是對指向Node的指針的引用。

2

不看他們在一起

,如果你看到這樣的內容:

Foo& foo(); 

你知道什麼是&手段?

這是一個參考的Foo

然後

Foo* foo(); 

這個怎麼樣?這是指向的Foo

然後

Foo*& foo(); 

是參照 「指向FOO」