c++类模板出现error C2955: 'Complex' : use of class template requires template argument list问题

#include<iostream.h>template<classT>classComplex{private:Treal;Timag;public:Complex(T... #include <iostream.h>
template <class T>
class Complex
{
private:
T real;
T imag;
public:
Complex(T r=0,T i=0)
{
real=r;
imag=i;
}
void print()
{
if(imag>0)
cout<<real<<"+"<<imag<<"i"<<endl;
else
{
if(imag<0)
cout<<real<<imag<<"i"<<endl;
else
cout<<real<<endl;
}
}
friend Complex operator+(Complex p1,Complex p2);
friend ostream & operator<<(ostream & out,Complex &);
friend istream & operator>>(istream & in,Complex &);
};
template <class T>
ostream & operator<<(ostream & out,Complex & a)
{
out<<a.real;
if(a.imag!=0)
{
if(a.imag>0)
{
out<<"+";
}
out<<a.imag<<"i";
}
out<<endl;
return out;
}
template <class T>
istream & operator>>(istream & in,Complex & a)
{
cout<<"请输入实部与虚部:\n";
in>>a.real;
in>>a.imag;
return in;
}
template <class T>
Complex <T> operator+(Complex <T> p1,Complex <T> p2)
{
Complex <T> p;
p.real=p1.real+p2.real;
p.imag=p1.imag+p2.imag;
return p;
}
int main()
{
Complex <double> a1,a2,a3;
cin>>a1;
cin>>a2;
a3=a1+a2;
cout<<a3;
return 0;
}

求助!
展开
 我来答
xiarl
2015-05-03 · TA获得超过1460个赞
知道小有建树答主
回答量:884
采纳率:85%
帮助的人:254万
展开全部

这样的话可以编译过:

#include <iostream>
using namespace std;

template <class T>
class Complex
{
private:
T real;
T imag;
public:
Complex(T r = 0, T i = 0)
{
real = r;
imag = i;
}
void print()
{
if (imag > 0)
cout << real << "+" << imag << "i" << endl;
else
{
if (imag < 0)
cout << real << imag << "i" << endl;
else
cout << real << endl;
}
}
template <class T>
friend Complex<T>  operator+(Complex<T> p1, Complex<T> p2);
template <class T>
friend ostream & operator<<(ostream & out, Complex<T> &);
template <class T>
friend istream & operator>>(istream & in, Complex<T> &);
};
template <class T>
ostream & operator<<(ostream & out, Complex<T> & a)
{
out << a.real;
if (a.imag != 0)
{
if (a.imag > 0)
{
out << "+";
}
out << a.imag << "i";
}
out << endl;
return out;
}
template <class T>
istream & operator>>(istream & in, Complex<T> & a)
{
cout << "请输入实部与虚部:\n";
in >> a.real;
in >> a.imag;
return in;
}
template <class T>
Complex <T> operator+(Complex <T> p1, Complex <T> p2)
{
Complex <T> p;
p.real = p1.real + p2.real;
p.imag = p1.imag + p2.imag;
return p;
}
int main()
{
Complex <double> a1, a2, a3;
cin >> a1;
cin >> a2;
a3 = a1 + a2;
cout << a3;
return 0;
}
追问
。。。请问修改了哪些地方,恕我眼拙。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式