我有一个方法,我想在两个数据成员之一上交替运行它们。我想做以下事情
void myClass::alternating_method(){
Graph G;
&G = iteration_number%2 ? &A : &B;
helper_method_which_modifies(G);
iteration_number++;
return;
}
其中 A
和 B
以及 iteration_number
都是 myClass
成员,但我不确定它是否有效.这对我来说似乎是正确的,但风格让我感到不对劲。期望的结果是在循环中调用 object.alternating_method()
并让它修改 object.A
和 object.B
。
这行得通吗?有没有更好的办法?会不会有意想不到的后果?当 G
超出范围时,我是否需要担心析构函数被调用?
编辑:为了澄清,我的意思是 helper_method_which_modifies
是包含多个方法的 100 行的简写。修改G
的大多是boost graph方法。既然我看到了答案,似乎最好的办法是拥有一个 alternator
,它除了在 A
和 B
之间进行选择外什么都不做,然后通过正确的变量关闭到另一个方法。
最佳答案
正如 Luchian Grigore 所说,它不会起作用,因为您需要一个 L 值。
尽管稍作改动,这个想法还是可行的。
void myClass::alternating_method(){
Graph& G = iteration_number%2 ? A : B;
helper_method_which_modifies(G);
iteration_number++;
return;
}
或者做更多的改变:
void myClass::alternating_method(){
helper_method_which_modifies((++iteration_number%2) ? A : B);
}
关于c++ - 将类成员的地址分配给方法变量以进行持久更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158916/