Ошибка компилятора при генерации исключения

В настоящее время я изучаю обработку исключений, и вот часть моего кода:

//vector.cpp

#include "vector.h"
Vector::Vector(int s)
{
if (s < 0) throw length_error{};
elem = new double[s];
sz = s;
}

Вот код, который я пытаюсь проверить с помощью исключения:

try{
Vector v(-27);
}
catch (length_error)
{
cout << "There was a negative size for your vector.\n";
}
catch (bad_alloc)
{
cout << "The memory was not allocated properly.\n";
}

Когда я пытаюсь запустить свое приложение, я получаю следующую ошибку:

error C2440: '<function-style-cast>' : cannot convert from 'initializer-list' to 'std::length_error'

Где ошибка?

РЕДАКТИРОВАТЬ: код был скопирован из C ++ Language Language Book.

1

Решение

По данным cppreference.com std::length_error имеет два конструктора:

explicit length_error( const std::string& what_arg );
explicit length_error( const char* what_arg );

И вы пытаетесь построить с пустым списком параметров. Вам нужно передать строку в конструктор.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]