[问题] 样板类别 的 运算子重载

楼主: hunandy14 (Charlott.HonG)   2016-05-31 19:37:04
请问样板类别的运算子重载该怎么写呢
参考自 http://goo.gl/0lihn8
我试着在自己加上样板结果出来编不过
程式码 https://gist.github.com/anonymous/0f2c51e9fb4d9a85406e39044eb370a4
注解的地方有[17][36][80] (错误的地方)
我想要做分数的相加,用frac储存分数
frac<double> a(1,3);
frac<double> b(1,2);
frac<double> temp;
temp=a+b; //temp=5/6
编译使用G++,错误讯息是
error.cpp:17:48: error: 'frac<T1> frac<T1>::operator+(const frac<T1>&, const
frac<T1>&)' must take either zero or one argument
frac operator+(const frac &a, const frac &b);
^
error.cpp:82:1: error: 'frac<T1>::frac' names the constructor, not the type
frac<T1>::frac operator+(const frac &a, const frac &b){
^
作者: bibo9901 (function(){})()   2016-05-31 19:49:00
a+b 的意思是 a.operator+(b) 所以无法接两个参数
作者: LPH66 (-6.2598534e+18f)   2016-05-31 20:42:00
不是, 是你的函数只需要吃一个参数, 另一个参数是 *this
作者: bibo9901 (function(){})()   2016-05-31 21:49:00
是 frac<T1> frac<T1>::operator+(...)
作者: CaptainH (Cannon)   2016-05-31 23:34:00
连照抄都抄错- - 仔细看::的位置
作者: bibo9901 (function(){})()   2016-06-01 01:08:00
XD 可是你实作里怎么又指定 frac<double> ??照理说不是应该是 frac<T1> 吗

Links booklink

Contact Us: admin [ a t ] ucptt.com