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

标签 c++ pointers variable-assignment

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

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/

相关文章:

pointers - "pointer to interface, not interface"

c - Gcc编译器C字符串赋值问题

c# - 在类构造函数中设置默认值 C#

c# - 在 WPF/C# 和 Qt/C++ 之间进行选择

c++ - 使用不同的字符编码

c - 在 C 中使用 strstr 方法与两个数组?

Ruby 和指针

javascript - 数组声明和赋值 (JavaScript)

c++ - 错误 : no matching function for call to 'begin(int*&)' c++

c++ - *nix & C++ 编写非阻塞套接字服务器