我有一个类Node:
class Node {
public:
int item;
Node * nextLink;
};
Run Code Online (Sandbox Code Playgroud)
在函数外部我声明了一个Node指针:
Node * newNode;
Run Code Online (Sandbox Code Playgroud)
然后,我将此指针传递给函数foo:
void foo(Node * node) {
node = new Node();
node->item = 1;
Node * anotherNode = new Node();
anotherNode->item = 2;
node->nextLink = anotherNode;
}
Run Code Online (Sandbox Code Playgroud)
实际通话:
foo(newNode);
Run Code Online (Sandbox Code Playgroud)
在foo结束时(但在现有之前),我可以看到node-> item和node-> nextLink指向正确的位置.但是,当从foo返回时,我检查newNode,并且该项是正确的,但nextLink不在那里.
有什么建议?谢谢
在其中,foo()
您正在修改传递给函数的指针的本地副本。更改foo
为以下内容:
void foo(Node ** node) {
*node = new Node();
(*node)->item = 1;
Node * anotherNode = new Node();
anotherNode->item = 2;
(*node)->nextLink = anotherNode;
}
Run Code Online (Sandbox Code Playgroud)
那么调用就变成:
foo( &newNode );
Run Code Online (Sandbox Code Playgroud)