我很難理解爲什麼下面的代碼不能在Visual Studio 2012下編譯,錯誤已經嵌入在下面的代碼中。 我覺得它與引用堆棧對象有關,但不太確定。 有人可以幫忙嗎?引用堆棧對象的地址
由於
#include <iostream>
typedef struct Node {
Node *next;
} Node;
void test(Node *&p) {
p=p->next;
}
void main() {
Node *p1=new Node();
test(p1); // this line compiles okay
Node p={0};
test(&p); // error C2664: 'test' : cannot convert parameter 1 from 'Node *' to 'Node *&'
}
的gcc爲您提供了一個很好的診斷:*「錯誤:類型‘節點*’的非const引用無效初始化從類型節點的」右值*」 *和回答您的懷疑勝任。 –
哈哈。它的deja-vu又一次。= P。海灣合作委員會的錯誤是儘可能具體的,你可以得到。函數期望對左值的引用。你傳遞一個右值。可以這麼說,那裏沒有「那裏」。 – WhozCraig