Исключение исключения из диапазона в C ++ - PullRequest
24 голосов
/ 25 апреля 2010

Этот код работает;

int at(int index) {
  if(index < 1 || index >= size)
    throw 0;

  return x[index];
}

Все же это не

int at(int index) {
  if(index < 1 || index >= size)
    throw std::out_of_range;

  return x[index];
}

Я получаю сообщение об ошибке "ожидаемое первичное выражение перед ';'". Теперь ... это удивляет меня, потому что я знаю, что std :: out_of_range существует и у меня есть

#include <stdexcept>

1 Ответ

71 голосов
/ 26 апреля 2010

Заменить throw std::out_of_range; на throw std::out_of_range ("blah");. То есть вам нужно создать объект, вы не можете бросить тип.

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