关于C++中的类模板问题

本人初涉C++现在学习到了类模板那个地方做了个小程序代码如下#include<iostream>usingnamespacestd;#definem10000000tem... 本人初涉C++ 现在学习到了类模板那个地方 做了个小程序 代码如下
#include <iostream>
using namespace std;
#define m 10000000
template<class T> //定义类模板
class Student
{
int n;
public:
int b1[m];
float b2[m];
float b3[m];
set();
display();
private:
T num[m],math[m],eng[m];
};
template<class T>
? Student<T>::set()
{
cout<<"Please input the student's number and the math grade and the english grade:"<<endl;
cin>>n;
for(int i=0;i<=n;i++)
{
cin>>num[i]>>math[i]>>eng[i];
b1[i]=num[i];
b2[i]=math[i];
b3[i]=eng[i];
}
}
template<class T>
? Student<T>::display()
{
cout<<"number\t"<<"math\t"<<"english\t";
for(int j=0;j<=n;j++)
cout<<b1[j]<<"\t"<<b2[j]<<"\t"<<b3[j]<<"\t"<<endl;
}
void main( )
{
Student<?> std1;
std1.set();
std1.display();
}
但是在编译的时候出问题了 就是函数类型和调用的时候好像不一样 但是第一个set()函数中 又有int float 不知道到底该在问号的地方写什么类型 求麻烦大家帮忙看下 谢谢了
展开
 我来答
dexahh
2011-06-05 · TA获得超过354个赞
知道答主
回答量:216
采纳率:100%
帮助的人:291万
展开全部
#include <iostream>
using namespace std;
#define m 10000000
template<class N,class M, class E> //定义类模板
class Student
{
int n;
public:
int b1[m];
float b2[m];
float b3[m];
void set();
void display();
private:
N num[m];
M math[m];
E eng[m];
};
template<class N,class M, class E>
void Student<N,M,E>::set()
{
cout<<"Please input the student's number and the math grade and the english grade:"<<endl;
cin>>n;
for(int i=0;i<=n;i++)
{
cin>>num[i]>>math[i]>>eng[i];
b1[i]=num[i];
b2[i]=math[i];
b3[i]=eng[i];
}
}

template<class N,class M, class E>
void Student<N,M,E>::display()
{
cout<<"number\t"<<"math\t"<<"english\t";
for(int j=0;j<=n;j++)
cout<<b1[j]<<"\t"<<b2[j]<<"\t"<<b3[j]<<"\t"<<endl;
}
void main( )
{
Student<int,float,int> std1;
std1.set();
std1.display();
}
//如果不一样,可以这么写
孤松独海
2011-06-05 · TA获得超过1513个赞
知道大有可为答主
回答量:1220
采纳率:0%
帮助的人:499万
展开全部
函数既然不需要返回值,那就不用写函数类型了,直接void就可以
追问
我试过三个函数 即set display 还有主函数中的定义对象的时候都写的void 但是现在给我的结果是:类体内的两个函数 must have class/struct/union type 这个问题没办法解决
我主要的想法是这样的 因为题目规定的不许明确num math eng这三个数组的类型 所以我定义了有类型的数组 int b1[m] floatb2[m] float b3[m]来进行传值 是不是这个地方有问题呢 还有如果想运行这个程序的话 该怎么改呢?
追答
定义变量的时候   里面一定写明类型,还有既然你三个数组为同一类型,为何你定义三个有类型变量类型不同,还有你可以对set加参数啊,这样才能赋值,否则你怎么赋值,你那个must have class type指的是哪一行代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式