我有两个班级是Student和StudentArray。
在课堂学生中,我已经宣布了一些学生的姓名,身份证,年龄等属性。
在StudentArray类中,我想创建一个Student类型的数组。 StudentArray类还包含一些函数,如Insert,它将在Student类型数组中插入数据。我想在阵列的相同索引处添加完整学生的数据,如姓名,年龄,身份等,但我无法理解如何做到这一点。
我也无法理解如何在StudentArray类的构造函数中初始化数组。这是我到目前为止所做的。
学生班
for post in post_list:
print post.find("span" , {"itemprop" : "name"}).text
StudentArray Class
class student
{
public:
string name;
int id;
int age;
string semester;
string degreeprogram;
};
StudentArray类的构造函数
class StudentArray
{
public:
student *s;
int used;
StudentArray();
~StudentArray();
void input();
void Insert(string n,int i,int a, string s, string dp);
int Search(string n, int i);
void DeleteAnyStudent(string n, int i);
void DeleteAll();
void Edit(string n, int i);
void show();
};
在StudentArray类中插入函数
StudentArray::StudentArray()
{
s = new student[100];
for(int i=0;i<100;i++)
{
s[i] = new student(); //ERROR HERE
}
used = 0;
}
我正在使用代码块。
在StudentArray的构造函数中,错误消息为void StudentArray::Insert(string n,int i,int a, string s, string dp)
{
s[used].name = n; //ERROR HERE
s[used].id = i; //ERROR HERE
s[used].age = a; //ERROR HERE
s[used].semester = s; //ERROR HERE
s[used].degreeprogram = dp; //ERROR HERE
used++;
}
在插入函数中,每行都抛出相同的错误,之后我写了“ERROR HERE”,只有名称,id或年龄等变量的名称发生变化
答案 0 :(得分:1)
在s = new Student[100];
之后,您有一个包含100个默认初始化Student
对象的数组,我认为这正是您想要的。
但是,然后你尝试为每个人分配一个指向另一个新分配对象的指针。这不起作用 - 你试图分配一个指向对象的指针 - 而且无论如何都不需要。如果你只是完全删除那个循环,你会更好。
编辑:你的第二个问题是因为你有一个名为s
的参数是一个字符串。这会隐藏名为s
的成员变量。您需要重命名其中一个。 (找到一个更好的名字应该不难!)
答案 1 :(得分:-1)
简单的成员s
为student*
因此s[i]
的类型为student
。
我认为你想要pointer to pointer
,将s
声明为student**