看看这个错误'complex' : use of class template requires template argument list
原程序如下:
#include <iostream>
#include <complex>
using namespace std;
class Mycomplex : public complex
{
public:
Mycomplex():complex(0,0){}
Mycomplex()(double r,double i):complex(r,i){}
friend int operator > (Mycomplex& c1,Mycomplex& c2);
};
int operator > (Mycomplex&c1,Mycomplex& c2)
{
return abs(c1)> abs(c2);
}
template <class T>
T& Bigger (T& a,T& b)
{
return (a> b) ? a : b;
}
int main()
{
int i1 = 10, i2 = 20, i3;
double d1 = 1.1,d2 = 2.2 , d3;
Mycomplex c1(1,2),c2(3,4),c3;
i3 = Bigger(i1,i2);
d3 = Bigger(d1,d2);
c3 = Bigger(c1,c2);
return 0;
}
编译错误如下:
E:\C++Language\WorkArea\Test070504\testmain.cpp(7) : error C2955: 'complex ' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\include\complex(267) : see declaration of 'complex '
E:\C++Language\WorkArea\Test070504\testmain.cpp(7) : fatal error C1903: unable to recover from previous error(s); stopping compilation
[解决办法]
1
std::complex是个模板类!!
class Mycomplex : public complex
====>
class Mycomplex : public complex <double>
2.
Mycomplex()(double r,double i):complex(r,i){}
====>
Mycomplex(double r,double i):complex(r,i){}
3.
friend int operator > (Mycomplex& c1,Mycomplex& c2);
===>
friend bool operator > (Mycomplex& c1,Mycomplex& c2);
[解决办法]
use of class template requires template argument list
编译信息说得挺明白的,模板类的使用需要模板参数list
[解决办法]
[size=14px][/size]谢谢高手能给一个完整的例子,我在用模板时也出现了问题,我自己设计了一个模板,但也出现了一楼那样的错误.
[解决办法]
你的实现函数是不是要加个类作用域:: 你的函数是在类外实现的呀