区分变量值的多个实例?

时间:2012-11-19 01:29:33

标签: c++

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,而不是首先使用这些变量?

即使双值相等,我只需要让代码完成上面几段所述的操作。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

不幸的是,如果以下两种情况都属实:

  

简称伪代码。基本上,'foo a'应该始终使用第一个if   子句,'foo b'应该总是使用第二个,'foo c'应该   总是使用第三个。

  

作为这项任务的一部分,我必须实现主要功能   办法。它无法改变。

...然后你运气不好。您的主要功能在abc之间除了名称之外没有任何区别。

也许我在你的措词中误解了一些东西 - 如果是的话,你能否澄清一下?