关于C++中类模板的问题
可能有点罗嗦,希望有人帮我解答.写一个类的模板,其作用是输入输出复数,我在类的成员中声明了函数,但是在运行的时候一直报错:1.errorC2955:“fushu”:使用类...
可能有点罗嗦,希望有人帮我解答.写一个类的模板,其作用是输入输出复数,我在类的成员中声明了函数,但是在运行的时候一直报错:
1.error C2955: “fushu”: 使用类 模板 需要 模板 参数列表
2.error C2509: “get”: 成员函数没有在“fushu”中声明
请问这是什么原因?我的格式哪里不对么?(下面是代码)
#include<iostream>
using namespace std;
template <class T> class fushu
{
private:
T real;
T xu;
public:
void set(T a,T b);
void get();
fushu();
~fushu();
};
void fushu::set(T a,T b)
{
real=a;
xu=b;
}
void fushu::get()
{
if(xu>0) cout<<real<<"+"<<xu<<"i"<<endl;
else if(xu=0) cout<<real<<endl;
else cout<<real<<xu<<"i"<<endl;
}
fushu::fushu()
{
real=0;
xu=0;
}
fushu::~fushu()
{
cout<<"end"<<endl;
}
int main()
{
cout<<"this is a test:"<<endl;
int a,b;
fushu<int> num1;
cin>>a>>b;
num1.set(a,b);
num1.get();
cout<<endl;
float c,d;
fushu<float> num2;
cin>>c>>d;
num2.set(c,d);
num2.get();
return 0;
} 展开
1.error C2955: “fushu”: 使用类 模板 需要 模板 参数列表
2.error C2509: “get”: 成员函数没有在“fushu”中声明
请问这是什么原因?我的格式哪里不对么?(下面是代码)
#include<iostream>
using namespace std;
template <class T> class fushu
{
private:
T real;
T xu;
public:
void set(T a,T b);
void get();
fushu();
~fushu();
};
void fushu::set(T a,T b)
{
real=a;
xu=b;
}
void fushu::get()
{
if(xu>0) cout<<real<<"+"<<xu<<"i"<<endl;
else if(xu=0) cout<<real<<endl;
else cout<<real<<xu<<"i"<<endl;
}
fushu::fushu()
{
real=0;
xu=0;
}
fushu::~fushu()
{
cout<<"end"<<endl;
}
int main()
{
cout<<"this is a test:"<<endl;
int a,b;
fushu<int> num1;
cin>>a>>b;
num1.set(a,b);
num1.get();
cout<<endl;
float c,d;
fushu<float> num2;
cin>>c>>d;
num2.set(c,d);
num2.get();
return 0;
} 展开
2个回答
展开全部
类模板根本不是这样写的 给你一个例子
/*1) 设计1个动态数组类模板。在构造函数中,为数组分配存储空间(new操作符),
在析构函数中释放内存。类模板中提供排序,求最大值、最小值和平均值的功能。*/
#include<iostream>
#include <algorithm> //这里包含algorithm的目的是为了能调用std:sort
using namespace std;
template<class T>
class Array//数组类
{
private:
T *a;//数组
int size;//数组的大小
public:
Array(int size)//构造函数
{
a = new T[size];//开辟新内存
cout<<"请输入"<<size<<"个数或字符:"<<endl;
for(int i=0;i<size;i++)//输入数据
cin>>a[i];
this->size=size;
}
~Array()//析构函数
{
delete[] a;
}
T Max()//求最大值
{
T max=a[0];
for(int i=0;i<size;i++)
{
if(max<a[i])
max=a[i];
}
return max;
}
T Min()//最小值
{
T min=a[0];
for(int i=0;i<size;i++)
{
if(min>a[i])
min=a[i];
}
return min;
}
T Average()//平均值
{
T sum =T();
// cout<<sum;
for(int i=0;i<size;i++)
{
sum+=a[i];
}
return sum/size;
}
void show()//
{
for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void Sort()
{
std::sort(&a[0],&a[size]);
}
};
int main()
{
Array<int>A(5);//int 类
A.show();
cout<<"A.Max = "<<A.Max()<<endl;
cout<<"A.Min = "<<A.Min()<<endl;
cout<<"A.Average = "<<A.Average()<<endl;
A.Sort();
A.show();
Array<char>B(5);//char 类
B.show();
cout<<"B.Max = "<<B.Max()<<endl;
cout<<"B.Min = "<<B.Min()<<endl;
cout<<"B.Average = "<<B.Average()<<endl;
B.Sort();
B.show();
return 0;
}
/*1) 设计1个动态数组类模板。在构造函数中,为数组分配存储空间(new操作符),
在析构函数中释放内存。类模板中提供排序,求最大值、最小值和平均值的功能。*/
#include<iostream>
#include <algorithm> //这里包含algorithm的目的是为了能调用std:sort
using namespace std;
template<class T>
class Array//数组类
{
private:
T *a;//数组
int size;//数组的大小
public:
Array(int size)//构造函数
{
a = new T[size];//开辟新内存
cout<<"请输入"<<size<<"个数或字符:"<<endl;
for(int i=0;i<size;i++)//输入数据
cin>>a[i];
this->size=size;
}
~Array()//析构函数
{
delete[] a;
}
T Max()//求最大值
{
T max=a[0];
for(int i=0;i<size;i++)
{
if(max<a[i])
max=a[i];
}
return max;
}
T Min()//最小值
{
T min=a[0];
for(int i=0;i<size;i++)
{
if(min>a[i])
min=a[i];
}
return min;
}
T Average()//平均值
{
T sum =T();
// cout<<sum;
for(int i=0;i<size;i++)
{
sum+=a[i];
}
return sum/size;
}
void show()//
{
for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void Sort()
{
std::sort(&a[0],&a[size]);
}
};
int main()
{
Array<int>A(5);//int 类
A.show();
cout<<"A.Max = "<<A.Max()<<endl;
cout<<"A.Min = "<<A.Min()<<endl;
cout<<"A.Average = "<<A.Average()<<endl;
A.Sort();
A.show();
Array<char>B(5);//char 类
B.show();
cout<<"B.Max = "<<B.Max()<<endl;
cout<<"B.Min = "<<B.Min()<<endl;
cout<<"B.Average = "<<B.Average()<<endl;
B.Sort();
B.show();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h> //头文件以 .h 结尾
using namespace std;
template <class T> class complex
{
private:
T real;
T imag;
public:
void set(T a,T b);
void get();
complex();
~complex();
};
template <class T>void complex<T>::set(T a,T b) //类函数在函数体外定义要写template <class T>,类名后要加<T>,下面同此
{
real=a;
imag=b;
}
template <class T>void complex<T>::get()
{
if(imag>0)
cout<<real<<"+"<<imag<<"i"<<endl;
else if(imag=0)
cout<<real<<endl;
else
cout<<real<<imag<<"i"<<endl;
}
template <class T>complex<T>::complex()
{
real=0;
imag=0;
}
template <class T>complex<T>::~complex()
{
cout<<"end"<<endl;
}
int main()
{
cout<<"this is a test:"<<endl;
int a,b;
complex<int> num1;
cin>>a>>b;
num1.set(a,b);
num1.get();
float c,d;
complex<float> num2;
cin>>c>>d;
num2.set(c,d);
num2.get();
return 0;
}
using namespace std;
template <class T> class complex
{
private:
T real;
T imag;
public:
void set(T a,T b);
void get();
complex();
~complex();
};
template <class T>void complex<T>::set(T a,T b) //类函数在函数体外定义要写template <class T>,类名后要加<T>,下面同此
{
real=a;
imag=b;
}
template <class T>void complex<T>::get()
{
if(imag>0)
cout<<real<<"+"<<imag<<"i"<<endl;
else if(imag=0)
cout<<real<<endl;
else
cout<<real<<imag<<"i"<<endl;
}
template <class T>complex<T>::complex()
{
real=0;
imag=0;
}
template <class T>complex<T>::~complex()
{
cout<<"end"<<endl;
}
int main()
{
cout<<"this is a test:"<<endl;
int a,b;
complex<int> num1;
cin>>a>>b;
num1.set(a,b);
num1.get();
float c,d;
complex<float> num2;
cin>>c>>d;
num2.set(c,d);
num2.get();
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询