3

例如:

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

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

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

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

我应该如何解决它?

4

3 回答 3

2

不要一起读

如果你看到这样的东西:

Foo& foo();

你知道是什么&意思吗?

这是对 Foo 的引用

然后

Foo* foo();

那这个呢?这是指向 Foo 的指针

然后

Foo*& foo();

是对“指向 Foo 的指针”的引用

于 2013-04-16T04:35:25.787 回答
2

Node*&意思是“对指针的引用Node”。您可以正常退货。然而,可以通过两种方式访问​​它:“正常”方式,其中“引用”部分将被删除,以及保留引用的方式。后一种方式的优点是您可以更改基础curr值:

Node *&curr = iterator.getCurr();
curr = new Node();  // or something like that
// iterator.curr has been changed
于 2013-04-16T04:36:06.693 回答
0

它是对指向的指针的引用Node

于 2013-04-16T04:34:46.353 回答