c ++中的try-catch异常

时间:2016-04-05 03:47:07

标签: c++ exception-handling polymorphism try-catch

如果学生列表为空,我被要求使用try-catch异常处理来处理这种情况。我是新手,异常处理可以有人指导我吗?以下是平均方法的实现。我需要使用try-catch来确保列表不为空。

double classAverage()
{
  int count = 0;
  double sum = 0.0;
  Container *temp = list;


if (temp == NULL)
{

    cout << "List empty!";
    return -1.0;
}

    while (temp != NULL)
    {

        sum += temp->student->getGrade();
        temp = temp->next;
        count++;
    }
    return sum / count;

}

2 个答案:

答案 0 :(得分:0)

由于changeGradeStudent的朋友,所以这应该有效:

void changeGrade(Student* s, int newGrade) {
    s->grade = newGrade;
}

现在,您将指针s重新指向新的Student对象。你想要什么 是更改传递给函数的对象。

答案 1 :(得分:0)

没有足够的信息,但我认为您的代码可能如下所示:

Student* student = new Student("John", "Doe", 99, 1);
changeGrade(student, 9);

这根本不会改变学生,因为你按值传递指针,所以当你重新分配它时,原始对象(指针student)不会改变。要使调用代码注意到更改,您必须通过 引用 Student*& - 推荐方式)或使用指向指针的指针({{1}另外,如果使用Student**);方法,请不要忘记删除原始指针(Student*),否则会泄漏内存。

<小时/> 你不应该绕过不设置Student**,它可能是不好的做法和混乱。