2015-04-29 131 views
0

我所看到的升壓給你做的可能性:複合賦值運算符重載

V * = c其中c是即雙v是一個向量

我如何才能讓,作爲一個練習,正確地重載* =,它和前面的例子一樣(右邊是double)?

回答

2

這樣的事情呢?

// in class 
T& operator *= (double d) 
{ 
    member *= d; 
    return *this; 
} 

// outside of class 
T operator * (T v, double d) 
{ 
    v *= d; 
    return v; 
} 
+0

您在第二個示例中缺少'=' – maja

+0

@maja它不是示例,它僅爲了一致性而重載'operator *'。 – ForEveR

+0

然後你的代碼正在修改參數v,當你寫'v1 = v * 4.2;' – maja

0

你的方法如下所示:

inline vector operator *= (vector v, double &b); 

它重載類載體,應該採取雙重,應該修改對象本身,而應返回自己作爲v1 = v2*= 4.2;

因爲這是一個練習,你不會在這裏發佈實現。