什么是“*&”一起意味着?

时间:2013-04-16 04:32:33

标签: c++ pointers

例如:

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

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

我在这段代码中收到错误:

  

将'const Iterator'作为'Node'&的'this'参数传递   Iterator :: getCurr()'丢弃限定符[-fpermissive]

我该如何解决?

3 个答案:

答案 0 :(得分:2)

不要一起阅读

如果你看到这样的话:

Foo& foo();

你知道&意味着什么吗?

这是对Foo的引用

然后

Foo* foo();

这个怎么样?这是指向Foo的指针

然后

Foo*& foo();

是指“指向Foo的指针”

答案 1 :(得分:2)

Node*&表示“引用指向Node的指针”。你可以正常退货。但是,访问它可以通过两种方式完成:“正常”方式,“引用”部分将被删除,以及保留引用的方式。后一种方法的优点是您可以更改基础curr值:

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

答案 2 :(得分:0)

它是指向Node的指针。