第7周项目5友元模板类
来源:互联网 发布:qemu运行arm linux 编辑:程序博客网 时间:2024/05/22 03:51
//看了半小时都找不出原因,逻辑语法都没错的,百度也找不到,有空再看看:INTERNAL COMPILER ERROR#include <iostream> using namespace std;template<class T> class Complex {public:Complex( ){real=0;imag=0;} Complex(T r,T i){real=r;imag=i;} Complex complex_add(Complex &c2);template<class T> friend Complex<T> add_complex( Complex<T> &c1, Complex<T> &c2); void display( ); private:T real; T imag;};template<class T> Complex<T> Complex<T>::complex_add(Complex &c2) {Complex<T> c; c.real=real+c2.real;c.imag=imag+c2.imag;return c;} template<class T> Complex<T> add_complex( Complex<T> &c1, Complex<T> &c2) { Complex<T> c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c; } template<class T>void Complex<T>::display( ) {cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); Complex<int> c7; c7=add_complex(c1,c2); cout<<"c1+c2="; c7.display( ); system("pause"); return 0; }