gpt4 book ai didi

C++ *& 类函数或结构错误

转载 作者:行者123 更新时间:2023-11-28 00:48:31 24 4
gpt4 key购买 nike

这是我的部分代码:

class Node{
public:
Node* parent;
Node* left;
Node* right;
int key;
};

(...)

/*
* Ps.: v1 is parent of v2!
* and assume that v1->parent is NULL
*/
void somefunction(Node*& v1,Node*& v2){
(...)
v2->parent = v1->parent; // The problem is here, more details below
(...)
}

问题是当我调用 v2->parent 时, 因为 <type>*&somefunction() 的论点中,编译器解释为 v2->parent等于v1 (谁是 v2 的父亲),它修改了 v1NULL , 但我只想修改 v2->parent值而不是 v1 .

PS.: 我需要使用 <type>*&在我的代码下面的某些部分,我不能只修改参数类型。

最佳答案

看起来你可能是这样调用函数的:

somefunction(v2->parent, v2);

这意味着函数内部的 v2->parent 与函数内部的 v1 是完全相同的对象。当您将 v2->parent 设置为 v1->parent(即 NULL)时,您正在修改 v1还有。

你说你不能修改参数类型,但我建议你这样做。引用指针是一个非常糟糕的迹象。您的代码似乎需要重新设计。

另一种方法是在将 v2->parent 传递给函数之前复制它:

Node* v1 = v2->parent;
somefunction(v1, v2);

现在函数中的v1就是v2->parent的拷贝,不会修改原来的。

关于C++ <type>*& 类函数或结构错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com