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给出b.y = 0,foo c = 1.4给出c.y = 2
简称伪代码。基本上,'foo a'应始终使用第一个if子句,'foo b'应始终使用第二个,而'foo c'应始终使用第三个。
作为这项任务的一部分,我必须以这种方式实现主要功能。它无法改变。
我的第一个想法是,即使我试图将foo a,b,c设置为相同的double,那个double总是在内存中占据不同的位置,不是吗?所以也许我可以在构造函数中以某种方式传递double& x的地址?然后将该地址设置为代表v1,v2和v3,而不是首先使用这些变量?
即使双值相等,我只需要让代码完成上面几段所述的操作。
答案 0 :(得分:2)
由于您的问题似乎与家庭作业相关,我将指向static member variables的方向,简而言之,是在给定的所有实例之间共享的类变量类。您可以使用这些变量中的一个或多个来跟踪实例实例化的进度。
答案 1 :(得分:0)
不幸的是,如果以下两种情况都属实:
简称伪代码。基本上,'foo a'应该始终使用第一个if 子句,'foo b'应该总是使用第二个,'foo c'应该 总是使用第三个。
和
作为这项任务的一部分,我必须实现主要功能 办法。它无法改变。
...然后你运气不好。您的主要功能在a
,b
和c
之间除了名称之外没有任何区别。
也许我在你的措词中误解了一些东西 - 如果是的话,你能否澄清一下?