有没有办法改变 THIS 指向的内容?
class foo{...}
foo* fooinstance = new foo();
foo* otherfooinstance = new foo();
void
foo::bar(){
this = otherfooinstance;
}
fooinstance->bar();
对于那些想知道在什么情况下我会更改 this 指针的人来说,这里是情况。我必须进行树递归,其中必须删除中间节点。对于此示例,我们假设删除的中间节点的标题为 d。并且这些中间节点只有一个子节点。所以用 Lisp 表示法如果我们有一棵像这样的树
(g(d(i 4))(i 5))
函数removeIntermediates(tree)实际上会导致上面的变成
(g (i 4) (i 5))
如果 this 指针是可重新分配的,则此指针的伪代码如下所示。
DTREE::removeIntermediates(){
this = child(0); removeIntermediates();
}
TREE::removeIntermediates(){
for each child { child->removeIntermediates();
}
我想在不知道子节点是什么的情况下执行此操作,因此使代码可分解为每个节点类型的不同函数,并具有其他类型的通用函数。
可悲的是,我最终做了这样的事情..
TREE::removeIntermediates(){
for each child { if(child->name == "d") {
setchild(child->child(0));
child->removeIntermediates();
}
else { child->removeIntermediates();}
}
No, this
是不可修改的。
从概念上讲这没有意义你想达到什么目的 http://www.catb.org/esr/faqs/smart-questions.html?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)