class foo{
public:
double v1, v2, v3;
double x, y;
foo(const double &a){
set_var();
x = a;
if(a == v1)
y = 1;
else if(a == v2)
y = 0;
else if(a == v3)
y = 2;
}
void set_var(){
// v1, v2 and v3 will always be the same values as the corresponding double values
// that foo a,b and c are being set to in main()
v1 = 1.4;
v2 = 1.4;
v3 = 1.4;
}
};
在主要功能中:
main(){
foo a = 1.2, b = 1.2, c = 1.2;
}
本质上,当我们尝试将 'foo a, b, c' 设置为相同的 double 值(因此 'v1, v2, v3' 也是相同的值)时,我希望这段代码执行的操作是 foo a=1.4给出 ay=1,foo b=1.4 给出 by=0,而 foo c=1.4 给出 cy=2
简而言之伪代码。基本上,'foo a' 应该总是使用第一个 if 子句,'foo b' 应该总是使用第二个,而 'foo c' 应该总是使用第三个。
作为这个任务的一部分,我必须以这种方式实现 main 函数。它不能改变。
我的第一个想法是,即使我试图将 foo a,b,c 设置为相同的双精度,该双精度总是在内存中占据不同的位置,不是吗?所以也许我可以在构造函数中以某种方式传递 double &x 的地址?然后将该地址设置为代表 v1、v2 和 v3,而不是首先使用这些变量?
即使双值相等,我只需要获取代码来执行我在上面概述的几段内容。