从方法内部,操纵另一个方法C ++的返回值

时间:2016-08-20 14:04:42

标签: c++ class methods return

我有一个定义了多个方法的类。有一种方法只是从成员变量返回一个值。还有另一种方法我想更新'从此方法内部返回的值。

示例:(假设已经在.hpp文件中对X进行了声明)

A::A() { 
    X = 800; //constructor initialising x & y
    Y = 1;
}
A::funcA() { 
    return Y;
}
A::funcB() { 
    if (x > y) {
        //make funcA now return 2 ...
    }

我可以将Y设置为我想要的值,但是如何将funcA设置为更新'用我设置的新值Y返回的值?当我尝试调用时:funcA()== 2;它似乎没有正确更新。

2 个答案:

答案 0 :(得分:0)

最简单的方法是更新Y的值,因为它是返回的。

A::A() { 
    X = 800; //constructor initialising x & y
    Y = 1;
}
A::funcA() { 
    return Y;
}
A::funcB() { 
    if (x > y) {
        Y = 2;
}

答案 1 :(得分:0)

您的示例缺少一些内容,例如返回值以及x时的返回值

只需决定funcA()要返回的内容:

int A::funcA(){
    if (x > y) {
        return Y; // or return 2 or whatever, just an example

    return X;
}

或者,有一个特殊的“返回值”'

class A
{
  private:
    int X,Y,retA;

  public:        

    A()
    { 
      X = 800; //constructor initialising x & y
      Y = 1;
      retA=Y;
    }

    int funcA() { 
      return retA;
    }

    funcB() { 
      if (x > y) {
        retA = 2;
      }
    }
}

如果要在两个变量之间切换,您甚至可以选择指针。这可以防止您复制值,但不允许您返回与存储的值不同的值。:

class A
{
  private:
    int X,Y;
    int* retA;

  public:        

    A()
    { 
      X = 800; //constructor initialising x & y
      Y = 1;
      retA=&Y;
    }

    int funcA() { 
      return *retA;
    }

    funcB() { 
      if (x > y) {
        retA = &X;  
        //do NOT use retA = 2 here, that would be invalid
        // *retA = 2 would be possible, but change either X or Y
      }
      else {
        retA = &Y;
      }
    }
}