“*&”连在一起代表什么?

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]

我该如何解决?


你正在返回一个指针的引用。从你的问题中很难确定这是否是你想要的。 - Cody Gray
很抱歉我修改了很多次我的问题。但是,我认为现在更清晰了。 - Bek
您需要先提供错误描述,才能修复它。否则我们无法提供帮助。 - Nbr44
好的,我刚刚提供了上面的内容。 - Bek
你能帮忙吗? - Bek
3个回答

2
请勿一起阅读它们。
如果你看到这样的内容:
Foo& foo();

你知道 & 是什么意思吗?

它是对 Foo 的引用。

然后

Foo* foo();

这是什么意思?这是指向Foo的指针。

接着

Foo*& foo();

指向Foo的指针


2

Node*& 表示“指向 Node 指针的引用”。您可以像正常返回一样返回它。但是,访问它有两种方式:一种是“普通”的方式,其中“引用”部分将被省略,另一种方式则保留了引用。后者的优点是您可以更改底层的 curr 值:

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

0

这是一个指向Node的指针引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接