区分变量值的多个实例

Differentiate between multiple instances of the value of a variable?

本文关键字:实例 变量值      更新时间:2023-10-16
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"设置为相同的双值(因此"v1,v2,v3"也是相同的值)时,我希望这段代码所做的是foo a=1.4给出a.y=1,foo b=1.4给出b.y=0,foo c=1.4给出c.y=2

简称伪代码。基本上,"fooa"应该始终使用第一个if子句,"foob"应该始终用第二个,"fooc"应该始终用到第三个。

作为这项任务的一部分,我必须以这种方式实现主要功能。它无法更改。

我的第一个想法是,即使我试图将foo a,b,c设置为同一个double,这个double在内存中总是占据不同的位置,不是吗?所以也许我可以以某种方式输入double&构造函数中的x?然后将该地址设置为表示v1、v2和v3,而不是首先使用这些变量?

我只需要让代码完成我在上面几段中概述的内容,即使双值相等。

由于您的问题似乎与家庭作业有关,我将向您指出静态成员变量的方向,简而言之,静态成员变量是在给定类的所有实例之间共享的类变量。您可以使用这些变量中的一个或多个来跟踪实例实例化的进度。

不幸的是,如果以下两项都为真:

的短伪代码。基本上,"foo a"应该始终使用第一个if子句中,"foo b"应始终使用第二个,而"foo c"应总是使用第三个。

作为此任务的一部分,我必须在方法它无法更改。

。。。那你就倒霉了。在您的主函数中,abc除了名称之外没有任何区别。

也许我误解了你的措辞——如果是的话,你能澄清一下吗?