単純な複素数操作用のコードを書こうとしています。テンプレートクラスを使用していますが、演算子(具体的には+、-、*、/)のオーバーロードに問題があります。テンプレートクラス内でオーバーロードを宣言し、同じヘッダーファイルでそれらを定義しようとしています。
私のヘッダーコードは次のとおりです。
#ifndef MY_CLASS_H
#define MY_CLASS_H
template <class T> class complex
{
private:
T re,im;
public:
// Constructors & destructor
complex(){re=im=0;}
complex(T r, T i){re=r; im=i;}
~complex(){}
// Return real component
T realcomp() const {return re;}
// Return imaginary component
T imagcomp() const {return im;}
// Overload + operator for addition
complex<T> operator+(const complex<T> &C);
....
};
#endif
#include<iostream>
#include<cmath>
using namespace std;
template <class T> complex<T>& complex<T>::operator+(const complex &C){
complex<T> A(re+C.realcomp(),im+C.imagcomp());
return A;
}
これにより、これまで解決できなかったエラーが返され、どこが間違っているのか完全にはわかりません。私がC++の初心者であり、このWebサイトの他の問題の解決策をパズルで解こうとしていることは、おそらく私のコードが少し混乱していることを意味しています-申し訳ありません!
どんな助けでも大歓迎です。