как исправить это предупреждение в CodeBlocks IDE, предупреждение: перехват полиморфного типа 'class std :: domain_error' по значению [-Wcatch-value =] - PullRequest
1 голос
/ 24 марта 2019

У меня есть исключение throw domain_error ("Ученик не сделал домашнюю работу") в моей функции оценки, если пользователь не вводит оценки домашней работы, в результате чего вектор становится равным 0. Затем я вызвал эту функцию в основном, в блоке try и catch, и компилятор выдает предупреждение.

Частичный вид основной функции

read_hw(cin,homework);
try
{
    double _final_grade = grade(midterm,_final,homework);
    streamsize prec = cout.precision();
    cout << "Your final grade is "<<setprecision(3) << _final_grade << 
    setprecision(prec) << endl;
}
catch(domain_error)
{
    cout << "You must enter your grades. Please try again" <<endl;
    return -1;
}

1 Ответ

1 голос
/ 24 марта 2019

Исключения должны учитываться по ссылке, а не по значению.

Используйте

catch(domain_error &)
...