对 class 成员参考的调用不明确
Ambiguous call to class member's reference
假设我有一个这样定义的二叉树节点:(为了方便起见,假设所有成员都是 public...)
class node
{
public:
int v;
node* left;
node* right;
//member functions....
}
我有两个名为 A 和 B 的节点指针以及 运行 以下脚本:
node* A;
node* B;
A->left = B;
A->left = NULL;
这会使 B 指向 NULL 还是它只改变了 A 的左子指针(即 *A 中的 this->left)而 B 仍然保持它过去指向的位置?
如果是前一种情况,如何在不影响B的情况下改变A->left的值?
TIA!
不,不是。 A->left = NULL
仅更改 A->left
.
的值
注意:我假设 A
和 B
已经以某种方式初始化,因为如果你 运行
node* A; //uninitialized
node* B; //uninitialized
A->left = B;
A->left = NULL;
你会崩溃的。
Update/Clarification: 我是说很有可能。但即使它会工作(例如,由于你的运气非常(缺乏),你可能会得到一个指向有效内存区域的垃圾值),它也不会做任何好事。如果你会得到一个有效的内存区域,并且在那里写入会带来一些理想的结果,立即停止调试,然后去附近的赌场,你今天很幸运:)
假设我有一个这样定义的二叉树节点:(为了方便起见,假设所有成员都是 public...)
class node
{
public:
int v;
node* left;
node* right;
//member functions....
}
我有两个名为 A 和 B 的节点指针以及 运行 以下脚本:
node* A;
node* B;
A->left = B;
A->left = NULL;
这会使 B 指向 NULL 还是它只改变了 A 的左子指针(即 *A 中的 this->left)而 B 仍然保持它过去指向的位置?
如果是前一种情况,如何在不影响B的情况下改变A->left的值?
TIA!
不,不是。 A->left = NULL
仅更改 A->left
.
注意:我假设 A
和 B
已经以某种方式初始化,因为如果你 运行
node* A; //uninitialized
node* B; //uninitialized
A->left = B;
A->left = NULL;
你会崩溃的。
Update/Clarification: 我是说很有可能。但即使它会工作(例如,由于你的运气非常(缺乏),你可能会得到一个指向有效内存区域的垃圾值),它也不会做任何好事。如果你会得到一个有效的内存区域,并且在那里写入会带来一些理想的结果,立即停止调试,然后去附近的赌场,你今天很幸运:)