2
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」は常に2番目を使用し、「fooc」は常に3番目を使用する必要があります。

この割り当ての一部として、私はそのようにmain関数を実装する必要があります。変更できません。

私が最初に考えたのは、foo a、b、cを同じdoubleに設定しようとしても、そのdoubleは常にメモリ内で別の場所を占めるということでしたね。それで、コンストラクターでdouble&xのアドレスをどうにかして渡すことができるでしょうか?次に、そもそもこれらの変数を使用する代わりに、v1、v2、v3を表すようにそのアドレスを設定しますか?

double値が等しい場合でも、上記の2、3段落で概説したことを実行するコードを取得する必要があります。

4

2 に答える 2

2

あなたの質問は宿題に関するもののようですので、静的メンバー変数、つまり、特定のクラスのすべてのインスタンス間で共有されるクラス変数の方向を示します。これらの変数の1つ以上を使用して、インスタンスのインスタンス化の進行状況を追跡できます。

于 2012-11-19T01:34:45.833 に答える
0

残念ながら、次の両方が当てはまる場合:

短い擬似コードで。基本的に、「foo a」は常に最初のif句を使用し、「foo b」は常に2番目を使用し、「fooc」は常に3番目を使用する必要があります。

この割り当ての一部として、私はそのようにmain関数を実装する必要があります。変更できません。

...それならあなたは運が悪い。、、およびそれらの名前を除いてa、メイン関数にまったく違いはありません。bc

たぶん私はあなたの言い回しの何かを誤解しています-もしそうなら、あなたは明確にできますか?

于 2012-11-19T01:52:08.713 に答える