在类中使用数组时遇到麻烦(C ++)

时间:2016-11-12 23:29:06

标签: c++ arrays class

我已经查看了此处和其他网站的各种论坛帖子,但是我没有看到任何涉及类似问题的内容。我遇到的问题是:当数组元素为6或更低时,studentInfo数组将无法正常运行。 我只想拥有一个大小为23 的数组,但代码会返回:

static char people[ROWS][COLS][NAME];

我在下面提供的代码是我实际代码的简化版本。我必须在我的程序中使用一个数组(没有某些人可能想要的向量),因为它是我的任务的一部分。我对c ++还是一个新手,所以对任何答案的一个很好的解释都很棒。谢谢你的帮助!

bash: line 12: 51068 Segmentation fault      $file.o $args

1 个答案:

答案 0 :(得分:1)

代码具有未定义的行为,因为成员函数getStudentInfo虽然以非void返回类型声明,但不返回任何内容。

声明它就像

void  getStudentInfo() const {
    for (int i = 0; i < 23; ++i) {
        cout << studentInfo[i] << " ";
    }
}

最好不要使用魔术数字。您可以在类中添加静态常量数据成员,如此

class StudentGrades {
    private:
    static const size_t N = 23;
    string studentInfo[N];
    ....

并在任何需要的地方使用它。例如

void  getStudentInfo() const {
    for (size_t i = 0; i < N; ++i) {
        cout << studentInfo[i] << " ";
    }
}