0

我有两节课。

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; }
};

这是两个非内联运算符 + 函数

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();

我想像这样添加这两个

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 回答