C++在另一个类中定义某一个类个对象数组

2024-12-16 21:25:46
推荐回答(1个)
回答1:

int a[3] = {1, 2, 3}; // ok

int b[3];
b[3] = {1, 2, 3};  // error of course


C++ 中, 不能用第二种方式 对数组 初始化, 除非 像a一样, 在定义的时候 可以. 


=====

多说一些:

如果 Lesson 没有默认的构造函数, 那么在Stu 类中 又没有显式的调用 Lesson 的 非默认构造函数的话, 会编译错误. 

这点在 上讲了. 因为, Lesson数组定义的时候, 是要为它的每一个元素 调用构造函数的. 而同时, 也讲了, 对于类中的成员, 如果不显式的对其初始化, 那它便会调用该成员的默认构造函数初始化.


所以对于 你的问题, 

  1. 对 Lesson 添加 默认构造函数.

  2. 像这样 :

  3.  Student(string nam,int id,int num,char YN)
            :name(nam),ID(id),number(num),yn(YN),
            le{{"ss", "22", 3, 'c'}, {"hh", "11", 4, 'l'}, .....}               // 对类中成员 为 数组的 初始化, 必须 在这里(构造函数的初始化列表中, 而不能在它的函数体中)
       {  // 不能在这.
  4.    }