我正在尝试为简单的复数操作编写一些代码。我正在使用模板类,但在重载运算符(特别是 +、-、*、/)时遇到问题。我试图在我的模板类中声明重载,然后在同一个头文件中定义它们。
我的标题代码如下:
#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++ 的初学者,并试图拼凑本网站上其他问题的解决方案,这可能意味着我的代码有点混乱——我道歉!
任何帮助将不胜感激。