我有一个定义了多个方法的类。有一种方法只是从成员变量返回一个值。还有另一种方法我想更新'从此方法内部返回的值。
示例:(假设已经在.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;它似乎没有正确更新。
答案 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;
}
}
}