设置成员变量值后,该值在 getter 函数内部发生变化
after setting a member variable value the value is changing inside getter function
我正在尝试设置两个成员变量,它们是 float 类型,并且也成功设置了一个(这只是在 setter 函数内部直接分配)。但是另一个需要一些计算,并且 static_cast<float>
我在计算后配置了它。对于第二个变量,我在 setter 函数内部检查了它,发现它配置正确,但是当我试图通过 getter function
或直接通过 class object
获取它时,它显示出一些奇怪的东西值。
源代码:
# include <iostream>
# include <math.h>
using namespace std;
class dosomething{
public:
float res_value_a;
float res_value_b;
void set_res_value_a ()
{
res_value_a = 0.35;
}
float get_res_value_a(){
return res_value_a;
}
void set_res_value_b(int set_value_b)
{
int b = pow (2, 6);
float res_value_b = static_cast<float>(set_value_b)/b;
cout<<"value of res_value_b after setting is: "<<res_value_b<<endl;
}
float get_res_value_b()
{
cout<<"value of res_value_b inside of getter function: "<<res_value_b<<endl;
return res_value_b;
}
};
int main()
{
dosomething obj;
obj.set_res_value_a();
float ret_get_val_a = obj.get_res_value_a();
cout<<"ret_get_val_a: "<<ret_get_val_a<<endl; // return value from function get_res_value_a
cout<<"member variable res_value_a: "<<obj.res_value_a<<endl; // checking member variable value by object
int set_value_b;
cin>> set_value_b;
obj.set_res_value_b(set_value_b);
float ret_get_val_b = obj.get_res_value_b();
cout<<"ret_get_val_b: "<<ret_get_val_b<<endl; // return value from function get_res_value_b
cout<<"member variable res_value_b: "<<obj.res_value_b<<endl; // checking member variable value by object
return 0;
}
对于 set_res_value_b
函数,我还提供了所需的输入和预期的输出--
if set_value_b = 64 then res_value_b = 1
if set_value_b = 20 then res_value_b = 0.3125
if set_value_b = 134 then res_value_b = 2.09375
我可以给出的一个错误值是 set_value_b = 20
,即 res_value_b = 4.59149e-41
。导致此错误的原因可能是什么?
行
float res_value_b = static_cast<float>(set_value_b)/b;
设置的不是成员变量的值,而是局部变量。
去掉第一个float
去掉局部变量,让它设置成员变量。
res_value_b = static_cast<float>(set_value_b)/b;
我正在尝试设置两个成员变量,它们是 float 类型,并且也成功设置了一个(这只是在 setter 函数内部直接分配)。但是另一个需要一些计算,并且 static_cast<float>
我在计算后配置了它。对于第二个变量,我在 setter 函数内部检查了它,发现它配置正确,但是当我试图通过 getter function
或直接通过 class object
获取它时,它显示出一些奇怪的东西值。
源代码:
# include <iostream>
# include <math.h>
using namespace std;
class dosomething{
public:
float res_value_a;
float res_value_b;
void set_res_value_a ()
{
res_value_a = 0.35;
}
float get_res_value_a(){
return res_value_a;
}
void set_res_value_b(int set_value_b)
{
int b = pow (2, 6);
float res_value_b = static_cast<float>(set_value_b)/b;
cout<<"value of res_value_b after setting is: "<<res_value_b<<endl;
}
float get_res_value_b()
{
cout<<"value of res_value_b inside of getter function: "<<res_value_b<<endl;
return res_value_b;
}
};
int main()
{
dosomething obj;
obj.set_res_value_a();
float ret_get_val_a = obj.get_res_value_a();
cout<<"ret_get_val_a: "<<ret_get_val_a<<endl; // return value from function get_res_value_a
cout<<"member variable res_value_a: "<<obj.res_value_a<<endl; // checking member variable value by object
int set_value_b;
cin>> set_value_b;
obj.set_res_value_b(set_value_b);
float ret_get_val_b = obj.get_res_value_b();
cout<<"ret_get_val_b: "<<ret_get_val_b<<endl; // return value from function get_res_value_b
cout<<"member variable res_value_b: "<<obj.res_value_b<<endl; // checking member variable value by object
return 0;
}
对于 set_res_value_b
函数,我还提供了所需的输入和预期的输出--
if set_value_b = 64 then res_value_b = 1
if set_value_b = 20 then res_value_b = 0.3125
if set_value_b = 134 then res_value_b = 2.09375
我可以给出的一个错误值是 set_value_b = 20
,即 res_value_b = 4.59149e-41
。导致此错误的原因可能是什么?
行
float res_value_b = static_cast<float>(set_value_b)/b;
设置的不是成员变量的值,而是局部变量。
去掉第一个float
去掉局部变量,让它设置成员变量。
res_value_b = static_cast<float>(set_value_b)/b;