#include <iostream>
#include <list>
#include <string>
using namespace std;

class Student
{
    string name;
    string num;
    int age;

    public:

    Student(string nam,string nu,int a)
    {
        name=nam;
        num=nu;
        age=a;
    }
     void print()
    {
        cout<<"Stu:"<<"name"<<name<<" "<<"num"<<num<<" "<<"age"<<age<<endl;
    }

// Student_1.push(Student *stu)


};
class Teacher
{
    string name;
    double sage;

    public:

    Teacher(string nam,double sa)
    {
        name=nam;
        sage=sa;
    }
         void print()
    {
        cout<<"Teacher:"<<"name"<<name<<" "<<"sage"<<sage<<endl;
    }


};
template <class T>
void print_1(T&q)
{

    T::iterator it;
    for(it=q.begin();it!=q.end();it++)
    {
         it->print();
    }
    cout<<endl;


}

int main()
{
    list<Student>Student_1;
    list<Teacher>Teacher_1;
    int i,j,ch,age;
    string name,num;
    double sage;


    cin>>i;//&sup2;&Ugrave;×÷×&Uuml;&Ecirc;&yacute;
    for(j=0;j<i;j++)
    {
      cin>>ch;
      switch(ch)
    {

    case 1:
      cin>>name>>num>>age;
      Student *stu;
      stu=new Student(name,num,age);
      Student_1.push_back(*stu);
      delete stu;
      break;
    case 2:
      cin>>name>>sage;
      Teacher *tea;
      tea=new Teacher (name,sage);
      Teacher_1.push_back(*tea);
      delete tea;
      break;
    case 3:
         if(!Student_1.empty())
         cout<<"stuStack is empty!"<<endl;
         else
         print_1(Student_1);
      break;
    case 4:
        if(Teacher_1.empty())
         cout<<"tckStack is empty!"<<endl;
        else
         print_1(Teacher_1);
      break;
      default:
      cout<<"Input error !"<<endl;
    }
    }
    //cout << "Hello world!" << endl;
    return 0;
}


我用的 CODE Blocks 做的 出现错误 就是在print_1函数里面 定义迭代器 出现错误