如何在一个调用模板的类中实例化多个类?

这样说的话可能有些不清楚,具体情况如下:

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class Score
{
protected:
    unsigned int Score_count;
    float *score;
    float totalscore;
public:
    Score(unsigned int count);
    void Caculate_sum_score();
    float Get_sum_score();
    float Get_score(unsigned int a);
    unsigned int Get_count();
    bool Set_score(unsigned int No, float value);//设置指定No的成绩为value
    void display(ostream&);
};
class Student :public Score
{
protected:
    unsigned long int ID;
    string Name;
    string Major;
    char Gender;
    int Grade;
    int Classes;
    unsigned int C_seq;//班级排名
    unsigned int S_seq;//校级排名
    Score *score;
public:
    Student(unsigned long int id, string name, char gender, string major, int grade, int clas, int score_count = 3) ;
    bool Set_name(string name);
    void Set_gender(char gender);
    void Set_clas(int clas);
    bool Set_cseq(int seq);
    bool Set_sseq(int seq);
    unsigned long int Get_id();
    string Get_name();
    char Get_gender();
    string Get_major();
    int Get_grade();    
    int Get_clas();
};
template <class T>
class Class
{
protected:
    vector<T *> class_mates;//学生向量
    unsigned int member_count;//学生数
    int class_No;
public:
    Class(int classno);
    int Get_Sign();
    vector<T *> *Get_mates();
    void sort_class_mates();//全班按总成绩排序,并计算排名  
    void insert_mate(T* stu);//有序插入一个班级成员
    T *delete_mate(unsigned long int id);//根据学号删除一个班级成员!!注意,只是从班级中删除指针,而对象用指针返回,需要后继处理!!
    T *find_mates(unsigned long int id);//根据学号查找学生
    list<T *> find_mates(string name);//根据姓名查找学生
    void caculate_score(unsigned int No, float &max, float &min, float &avg);//计算编号为No的课程的最高成绩-0,最低成绩-1,平均成绩-2
    void out_over_avg(unsigned int No);//输出编号为No的课程高于平均分的学生信息和数量
    void out_failed(unsigned int No);//统计某班级某课程不及格学生名单及人数
    void statistics_level(unsigned int No, int level[5]);//五级制,0-优,1-良,2-中,3-及格,4-不及格
    void display(ostream &out = cout);
    ~Class();
};
class uStudent:public Student
{
public:
    uStudent();
    friend ostream & operator<<(ostream &out, uStudent & ust);
    friend istream & operator>>(istream &in, uStudent & ust);
    uStudent(unsigned long int id, string name, char gender, string major, int grade, int clas, int score_count);
};
class gStudent :public Student
{
protected:
    string tutor;
    string direction;
public:
    gStudent(string tu,string dir);
    friend ostream & operator<<(ostream &out, gStudent & gst);
    friend istream & operator >> (istream &in,gStudent & gst);
    gStudent(string tu, string dir, unsigned long int id, string name, char gender, string major, int grade, int clas, int score_count);
};

Class类的作用是存放学生信息,但是学生信息有两个类,本科生和研究生,用这个班级类的成员容器存储两类学生的信息。T可以是研究生也可以是本科生,但是在这里有涉及一个按总成绩排名的操作,而T是不定类型,想知道怎样才能够使这个类实例化多个类型,也就是实现在这个类中访问本科生或研究生的总成绩呢?

template
ostream& operator<<( ostream& s, const std::map& a)
{
int32 sz = a.size();
s << sz;
for(typename std::map::const_iterator i
= a.begin(); i != a.end(); ++i)
{
if (!s.good()) break;
s << i->first << i->second;
}
return s;
}
ostringstream oss;
map a;
oss << a;
string as = oss.str();

mutex _mutex是私有的嘛

在student基类中定义成绩比较的接口,由各子类实现该接口,这样在模板类中就可以调用比较成绩比较函数进行排序;
同样,在student基类中定义获取成绩的接口,由各子类实现该接口,...。

给你提一些建议:Score和Student是“Has a”关系而不是“Is a”关系,采用继承是不合理的。