Есть ли способ изменить то, на что ЭТО указывает?
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))
и псевдокод для этого IF, если этот указатель был переназначен, будет выглядеть следующим образом ..
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();}
}