我有两个班。运算符重载 - 如何更改对象的位置?
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;
}
我想要做的是改变的是我在
resultInch = i + m;
resultInch.out();
我想+ M的地方加入这两个像
resultInch = m + i;
resultInch.out();
我怎样才能做到这一点?
那么你应该使双方返回'Inch'。在我看来,让'inch + metre'返回'Inch'和'meter + inch'返回一个'Metre'是没有意义的。 – chris 2013-02-25 20:50:08