gpt4 book ai didi

c++ - 将类成员的地址分配给方法变量以进行持久更改

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:34 25 4
gpt4 key购买 nike

我有一个方法,我想在两个数据成员之一上交替运行它们。我想做以下事情

void myClass::alternating_method(){
Graph G;
&G = iteration_number%2 ? &A : &B;
helper_method_which_modifies(G);
iteration_number++;
return;
}

其中 AB 以及 iteration_number 都是 myClass 成员,但我不确定它是否有效.这对我来说似乎是正确的,但风格让我感到不对劲。期望的结果是在循环中调用 object.alternating_method() 并让它修改 object.Aobject.B

这行得通吗?有没有更好的办法?会不会有意想不到的后果?当 G 超出范围时,我是否需要担心析构函数被调用?

编辑:为了澄清,我的意思是 helper_method_which_modifies 是包含多个方法的 100 行的简写。修改G的大多是boost graph方法。既然我看到了答案,似乎最好的办法是拥有一个 alternator,它除了在 AB 之间进行选择外什么都不做,然后通过正确的变量关闭到另一个方法。

最佳答案

正如 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com