gpt4 book ai didi

c++ - 在函数中访问类的数组

转载 作者:太空狗 更新时间:2023-10-29 20:06:18 24 4
gpt4 key购买 nike

我制作了一个类 st[5] 的数组。并尝试使用函数显示st[5] 的数据。但它不起作用。

仅显示第 1 类 (st[0]),以及“调试错误消息”。我不知道是什么问题。

main 函数在底部。

#include <iostream>
using namespace std;

#define MAX 5 //size of array

//Class 'Student'
class Student
{
public:
int num;
char name[10];
};

//Class 'Lscore' extends Student (virtual)
class Lscore : virtual public Student
{
public:
int eng;
};

//Class 'Nscore' extends Student (virtual)
class Nscore : virtual public Student
{
public:
int math;
};

//Class 'Totscore' extends Lscore, Nscore
class Totscore : public Lscore, public Nscore
{
public:
Totscore(); //Constructor1
Totscore(char name[], int num, int eng, int math); //Constructor2
void Display(); //Print Myself
};

//Constructor1
Totscore::Totscore( )
{
}

//Constructor2
Totscore::Totscore(char name[10], int num, int eng, int math)
{
strcpy_s(this->name, 10, name);
this->num = num;
this->eng = eng;
this->math = math;
}


//Print Myself
void Totscore::Display(){
cout<<this->num<<" "<<this->name<<" ";
cout<<this->eng<<" "<<this->math<<" "<<endl;
}


//Print Array (--- Problem Part !! ---)
void PrintArray(Totscore *stu){
for(int i=0; i< MAX; i++){
stu[i].Display();
}

}

//Main Function
int main(){
Totscore *st[MAX]; //Class Array 'st'

st[0] = new Totscore("A",101,85,77);
st[1] = new Totscore("B",102,90,89);
st[2] = new Totscore("C",103,80,55);
st[3] = new Totscore("D",104,75,85);
st[4] = new Totscore("E",105,85,85);

PrintArray(*st);
}

运行屏幕如下。 (我无法上传图片,因为我的声誉很低。)

101  A  85  77

并显示“调试错误消息”...

最佳答案

您在这里创建了一个指针数组:

Totscore *st[MAX];

但是你传递的是第一个元素:

PrintArray(*st);

将函数更改为指向整个数组的指针应该可行:

void PrintArray(Totscore **stu){ 
for(int i=0; i< MAX; i++){
stu[i]->Display();
}
}

PrintArray(st);

关于c++ - 在函数中访问类的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com