0

私は2つのクラスを持っています。

Inch class:

class Inch{
private:
    double inches;

public:
    Inch() : inches(0) {}
    Inch(double i) { inches=i; }
    Inch operator+ (const Meter& m);
    void out(){ cout << "Inch:" << inches << "\n";  }
    double getInches() const { return inches; }
};

およびメータークラス

class Meter{
private:
    double meter;

public:
    Meter() : meter(0) {}
    Meter(double m) { meter=m; }
    Meter operator+ (const Inch& i);
    void out(){ cout << "Meter:" << meter;  }
    double getMeter() const { return meter; }
};

これらは 2 つの非インライン演算子 + 関数です

Meter Meter :: operator+ (const Inch& i){
    { return Meter(meter /  0.0254 + i.getInches()); }
}

Inch Inch :: operator+ (const Meter& m){
    { return Inch(m.getMeter() + inches * 0.0254); }
}

これは私のメインであり、コンパイルされます。大丈夫。

int main() {

    Inch i(6.4),
         resultInch;

    Meter m(14),
         resultMeter;


    i.out();
    m.out();


resultMeter = m + i;
     resultMeter.out();

     resultInch = i + m;
          resultInch.out();


    return 0;
}

私がしたいのは i + m の場所を変えることです

 resultInch = i + m;
      resultInch.out();

この2つをそのまま追加したい

resultInch = m + i;
          resultInch.out();

どうやってやるの?

4

2 に答える 2

2

変換コンストラクターを追加します。

Inch(Meter const & m) : inches(m.getMeter() * 100.0 / 2.54) { }

Meter(Inch const & i) : meters(i.getInches() * 2.54 / 100.0) { }
于 2013-02-25T20:50:27.507 に答える
0

2 つの引数を取るグローバル加算演算子を作成できます

Inch operator+(const Meter& m, const Inch& i)
于 2013-02-25T20:50:43.230 に答える