表題のとおり,C++演算子オーバーロードで虚数計算をするコードを書いています.
虚数型として,ItypeというClassを定義して行っています.
環境はCentOS6.7, gcc4.6.3, コンパイルオプションは使っていません.
実数と虚数同士の全ての演算の組み合わせを実装したいと思っています.
(例えば実数=虚数+虚数なら,実部のみを足して実数に代入)
現在,以下のようなコードを書いているのですが,2つのエラーに悩んでいます.
(1)c = a + bはできるが,c = a + b + aのような多項式ができない
エラー)./src/Itype.cpp(15): エラー: 演算子 "+" がこれらのオペランドと一致しません。
オペランドの型は (Itype + Itype) です。
(2)double = Itype + Itypeが定義できない
エラー: 戻り型のみで識別された関数は多重定義できません。
(2)は多少面倒な方法になっても構いません.
実装方法をご存じの方,教えていただけないでしょうか.
c++
1//header_file 2class Itype 3{ 4 public: 5 double r; 6 double i; 7 Itype() 8 : r(0.0), i(0.0) 9 {} 10 11//arithmetics 12friend Itype operator+( Itype& a, Itype& b); 13friend double operator+( Itype& a, Itype& b); 14};
c++
1// C_file 2Itype operator+( Itype& a, Itype& b){ 3 Itype ans; 4// ..処理.. 5 return ans; 6} 7double operator+( Itype& a, Itype& b);{ 8 double ans; 9// ..処理.. 10 return ans; 11} 12int main(){ 13 Itype a, b, c; 14 a.r=1; 15 a.i=1; 16 b.r=1; 17 b.i=1; 18 c.r=1; 19 c.i=1; 20 a = b + c + a; 21 return(0); 22} 23
回答3件
あなたの回答
tips
プレビュー