打印对象数组

Print array of objects

本文关键字:数组 对象 打印      更新时间:2023-10-16

我想打印两个类的对象数组。我有班学生作为班级BaseCS_studentIS_student派生的班级,我有一个类型学生数组,我想在班级大学的打印功能中打印它。

我想要 3 个选项:

  1. 打印所有CS_student。
  2. 打印所有IS_student。
  3. 打印所有CS_student和IS_student。

但它只打印一个对象。这是我的代码

class student (){
int ID;
string first_Name;
string last_Name;
public:
virtual void print ()=0; };
class CS_student ():public student {
public:
    void print(){
        cout<<" CS student "<<endl;}
};
class IS_student():public student {
public:
    void print(){
        cout<<"IS student"<<endl;}
};
class university {
    student **S;
    int size;
public :
    university (){
        S= new student *[size];
        size = 10;}
        ........
        ........
        void Print(){
            int y;
            cout<<"enter 1 to print CS student , enter 2 to print IS 
    student , enter 3 to print all CS and IS students";
            cin>>y;
            switch(y){
                case 1:{
                    for ( int i =0 ; i<size ; i++){
                      student * obj = S[i];
                      CS_student *obj2 = dynamic_cast<CS_student*>(obj);
                      if(obj2){
                     obj2->print();}
                    }
                       }
                       break;
                case 2:{
                    for ( int i =0 ; i<size ; i++){
                      student * obj = S[i];
                      IS_student *obj2 = dynamic_cast<IS_student*>(obj);
                      if(obj2){
                     obj2->print();}
                    }
                       }
                       break;
                case 3:{
                    for ( int i =0 ; i<size ; i++){
                       S[i]->print();}
                    break;
                default:{
                    cout<<"Error";
                        }
                       }
            }
        }
};

您在设置size=10之前正在初始化S= new student *[size];。您应该在使用size变量之前对其进行初始化。

S= new student *[size];
size = 10;

因此,您使用size作为动态分配的数组的长度,然后将 size 设置为 10 。那么阵列的大小是多少?当你使用它时,它是未初始化的,使用它有未定义的行为。您需要交换这两行,以便在创建数组时10 size