对 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.

的值

注意:我假设 AB 已经以某种方式初始化,因为如果你 运行

node* A; //uninitialized
node* B; //uninitialized
A->left = B;
A->left = NULL;

你会崩溃的。

Update/Clarification: 我是说很有可能。但即使它会工作(例如,由于你的运气非常(缺乏),你可能会得到一个指向有效内存区域的垃圾值),它也不会做任何好事。如果你会得到一个有效的内存区域,并且在那里写入会带来一些理想的结果,立即停止调试,然后去附近的赌场,你今天很幸运:)