制作动态的对象数组并初始化它

时间:2016-05-22 11:43:40

标签: c++ arrays

我有两个班级是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或年龄等变量的名称发生变化

2 个答案:

答案 0 :(得分:1)

s = new Student[100];之后,您有一个包含100个默认初始化Student对象的数组,我认为这正是您想要的。

但是,然后你尝试为每个人分配一个指向另一个新分配对象的指针。这不起作用 - 你试图分配一个指向对象的指针 - 而且无论如何都不需要。如果你只是完全删除那个循环,你会更好。

编辑:你的第二个问题是因为你有一个名为s的参数是一个字符串。这会隐藏名为s的成员变量。您需要重命名其中一个。 (找到一个更好的名字应该不难!)

答案 1 :(得分:-1)

简单的成员sstudent*因此s[i]的类型为student

我认为你想要pointer to pointer,将s声明为student**