我有兩個班。運算符重載 - 如何更改對象的位置?
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