2015-04-29 91 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;

因为这是一个练习,你不会在这里发布实现。