Исключительная обработка файлов - PullRequest
0 голосов
/ 29 сентября 2018

Я новичок в c ++, и я пытался реализовать исключительную обработку файлов с использованием c ++.В следующем коде я унаследовал класс Divide_By_Zero_Exception от базового исключения класса . После выполнения кода я получаю ошибку

error: ожидаемое имя классаbefore '{' token {

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

//program to throw an exception if denominator is zero
#include <iostream>
#include <exception>
class Divide_By_Zero_Exception : public exception
{
public:
    const char * what() const throw() {
        return "Divide By Zero Exception";
    }
};
using namespace std;
int main()
{
    Divide_By_Zero_Exception d;
    int n1, n2;
    cin >> n1 >> n2;
    try
    {
        if (n2 == 0)
            throw d;
        else
            cout << n1 / n2;
    }
    catch (exception& e) {
        cout << e.what();
    }
    return 0;
}

1 Ответ

0 голосов
/ 29 сентября 2018

Это std::exception, а не exception, потому что ваш using -директор еще не действует, когда вы используете имя.

Кроме того, вместо

const char * what() const throw()

вынаверное хотел написать

const char * what() const noexcept
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...