[問題] 更改operator oder

看板C_and_CPP (C/C++)作者 (小修)時間13年前 (2012/10/03 13:06), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/1
class real { private: double a; public: real(); real(double ini); friend real operator^(const real & r1,const real & r2); friend real operator+(const real & r1,const real & r2); friend real operator-(const real & r1,const real & r2); friend real operator*(const real & r1,const real & r2); friend real operator/(const real & r1,const real & r2); }; real::real() { a = 0; } real::real(double ini) { a =ini; } real operator ^(const real & r1,const real & r2) { real power; power.a = pow(r1.a,r2.a); return power; } real operator +(const real & r1,const real & r2) { real sum; sum.a = r1.a + r2.a; return sum; } real operator -(const real & r1,const real & r2) { real de; de.a = r1.a - r2.a; return de; } real operator *(const real & r1,const real & r2) { real dot; dot.a = r1.a * r2.a; return dot; } real operator /(const real & r1,const real & r2) { real sum; sum.a = r1.a / r2.a; return sum; } 小弟在寫operator時遇到想要更改oder順序的問題,我只是想增加一個 operator ^,讓它有pow函數的功能而已,可是遇到諸如 d = a^b + c;這類式子時,它都會先處理b+c再來算 ^ ,不知道如何更改oder呢? 我希望運算的順序是 ^ > *,/ > +,- 或是有更好的方法可以解決。謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.215.132

10/03 13:09, , 1F
無法
10/03 13:09, 1F

10/03 13:11, , 2F
d=(a ^ b)+c;
10/03 13:11, 2F

10/03 14:49, , 3F
這種寫在compiler的LALR(?) parser裡面的rule應該改不了
10/03 14:49, 3F

10/03 14:49, , 4F
吧...
10/03 14:49, 4F

10/03 19:42, , 5F
expression template 加上一堆template技巧說不定辦得到
10/03 19:42, 5F
文章代碼(AID): #1GQyVpwu (C_and_CPP)
文章代碼(AID): #1GQyVpwu (C_and_CPP)