C++ <type>*&类函数或结构错误
C++ <type>*& in class function or struct error
这是我的一部分代码:
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
时,由于somefunction()
参数中的<type>*&
,编译器解释为v2->parent
等于v1
(谁是v2的父亲),并将v1
修改为NULL
,但我只想修改v2->parent
值而不是v1
。
p。:我需要在我的代码下面的某些部分使用<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++ 结构错误"调用'erase'没有匹配函数
- 尝试传递结构数组,但出现"无法将'结构'转换为'结构*'错误
- 结构错误:"no matching function for call to "
- UE4 数据表结构错误
- STL 对priority_queue<int、结构>错误
- C :用于体系结构错误的经典未定义符号
- 体系结构错误的未定义符号
- 奇怪的用户定义的比较结构错误,用于C++中的priority_queue
- 模板结构错误
- C++结构错误 - 错误 C2061:语法错误:标识符
- C++ 结构错误的前向声明
- 结构错误"uninitialized reference member"
- 使用 MPL::fold 与占位符和我自己的结构错误
- C++结构错误"No matching function for call..."
- 插入映射<字符串,结构>错误
- CPP 头文件结构错误
- 矢量和结构错误
- C++ 结构 - 错误 1 错误 C2143:语法错误:缺少'*'之前的';'
- 结构错误的构造函数(调用类的构造函数 denconstructor,用于填充结构)
- 结构错误与C++