Ожидаемый безусловный идентификатор перед & amp; токен (Mininet VM, попробуйте / поймайте на std :: invalid_argument)

Я получаю следующую ошибку при компиляции на виртуальной машине Mininet с использованием g ++.

error: expected unqualified-id before '&' token
} catch (const std::invalid_argument& ia) {
^

Код:

try {
port = std::stoi(argv[3]);
if (port < 1024 || port > 65535) {
cerr << "Error: port number must be in the range 1024 to 65535";
exit(1);
}
} catch (const std::invalid_argument& ia) {
cerr << "Error: missing or additional arguments: Expected number for port" << endl;
}

Я не получаю ошибку при компиляции на macOS с такими же настройками. Удаление const или & просто приводит к другой ошибке; дела std::invalid_argument ia приводит к ошибке: ожидаемый тип-спецификатор

Так как я не могу воспроизвести это на моем Mac, а это происходит только на виртуальной машине Mininet, я не знаю, как это происходит и что можно исправить.

Примечание: чтобы уточнить, я побежал sudo apt-get install g++ на виртуальной машине сегодня, и я компилирую с C ++ 11, используя следующее: `g ++ -std = c ++ 11 -Wall -Wextra -pedantic -O -o имя_кода code_name.cpp

0

Решение

На ВМ Мининет, #include <stdexcept> требуется для того, чтобы использовать функциональность, описанную в вопросе. Этот включаемый файл (помимо прочего) не требуется в macOS, где он включен по умолчанию.

#include <stdexcept> исправляет эту конкретную проблему.

-1

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

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

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