有没有办法改变这一点?
class foo{...}
foo* fooinstance = new foo();
foo* otherfooinstance = new foo();
void
foo::bar(){
this = otherfooinstance;
}
fooinstance->bar();
Run Code Online (Sandbox Code Playgroud)
对于那些想知道在什么情况下我会改变这个指针的人来说就是这种情况.我不得不做一个树递归,我必须删除中间节点..对于这个例子,我们假设删除的中间节点有标题d.这些中间节点只有一个子节点.所以在lisp表示法中,如果我们有一棵树
(g(d(i 4))(i 5))
函数removeIntermediates(tree)实际上会导致上述内容成为
(g(i 4)(i 5))
这个指针可重新分配的IF的伪代码如下所示..
DTREE::removeIntermediates(){
this = child(0); removeIntermediates();
}
TREE::removeIntermediates(){
for each child { child->removeIntermediates();
}
Run Code Online (Sandbox Code Playgroud)
我想在不知道子节点是什么的情况下这样做,因此使代码可以为每个节点类型分解为不同的函数,并且具有其他类型的通用函数.可悲的是,我刚刚做了这样的事情......
TREE::removeIntermediates(){
for each child { if(child->name == "d") {
setchild(child->child(0));
child->removeIntermediates();
}
else { child->removeIntermediates();}
}
Run Code Online (Sandbox Code Playgroud)