类模板参数怎么老是有问题
学习类,继承,派生,模板,自己想把这几个联起来练习一下,以为简单,做起来,老是提示模板参数不对。请朋友们再帮看看,分析,解决问题,谢谢。
#include<iostream>
#include<fstream>
using namespace std;
template <typename T>
class Person
{
public:
Person(T *name,bool sex)
{
strcpy(m_name, name);
m_sex=sex;
}
~Person(){ }
void SetName(char * name){strcpy(m_name, T name);}
char * GetName(){return m_name;}
void SetSex(bool sex){m_sex=sex;}
bool GetSex(){return m_sex;}
virtual void DisplayInfo()
{
cout<<"个人信息:"<<endl
<<"姓名:"<<m_name<<endl
<<"性别:";
if(m_sex==true)
cout<<"男"<<endl;
else
cout<<"女"<<endl;
}
protected:
char m_name[20];
bool m_sex;
};
template <char * sno,typename T,bool sex>
class Student: virtual public Person<T>
{
public:
Student(char * sno,T *name,bool sex,char *major):Person( T name,sex)
{
strcpy(m_sno,sno);
strcpy(m_major,major);
}
~Student(){ }
void SetSno(char *sno){strcpy(m_sno,sno);}
char * GetSno(){return m_sno;}
void SetMajor(char *major){strcpy(m_major,major);}
char * GetMajor(){return m_major;}
void DisplayInfo()
{
cout<<"学生信息:"<<endl
<<"学号:"<<m_sno<<endl
<<"姓名:"<<m_name<<endl
<<"性别:";
if(m_sex==true)
cout<<"男"<<endl;
else
cout<<"女"<<endl;
cout<<"专业:"<<m_major<<endl;
}
private:
char m_sno[10]; //学号
char m_major[20]; //专业
};
template <char *tno,typename T,bool sex>
class Teacher:virtual public Person<T>
{
public:
Teacher(char * tno,T *name,bool sex,char * depart):Person(T name,sex)
{
strcpy(m_tno,tno);
strcpy(m_depart,depart);
}
~Teacher(){ }
void SetTno(char * tno){strcpy(m_tno,tno);}
char * GetTno(){return m_tno;}
void SetDepart(char *depart){strcpy(m_depart,depart);}
char * GetDepart(){return m_depart;}
private:
char m_tno[6]; //教师号
char m_depart[20];//系
};
template<typename T>
void Print(Person <T> rp)
{
rp.DisplayInfo();
}
---------------------------------------------
#include<iostream>
#include<fstream>
#include"virtualwrite.h"
using namespace std;
struct Studentinfo
{
char num[10];
char name[20];
bool sex;
char major[20];
};
int main()
{
Studentinfo stu[3]={
{"1610101","唐斌",true,"医学"},
{"1610102","李慧慧",false,"葡萄牙语"},
{"1610103","王鑫楚",true,"光电学"}
};
Person <char>person("陈雨",false);
Print(person);
cout<<endl;
cout<<"通过student类多态性显示信息:"<<endl;
Student < char *sno,char *name,bool sex >student("1610101","唐斌",true);
print(student);
return 0;
}
提示信息:
teststudentinfo.cpp(61): error C2146: 语法错误: 缺少“,”(在标识符“sno”的前面)
teststudentinfo.cpp(61): error C2977: “Student”: 模板 参数太多
请帮助看看错在哪里了,提示“”Student <char *sno,char,bool sex >student("1610101","唐斌",true,"医学")“这里有问题,自己试 了很多次,都是不成功。