Я получаю следующую ошибку при компиляции на виртуальной машине 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
На ВМ Мининет, #include <stdexcept>
требуется для того, чтобы использовать функциональность, описанную в вопросе. Этот включаемый файл (помимо прочего) не требуется в macOS, где он включен по умолчанию.
#include <stdexcept>
исправляет эту конкретную проблему.
Других решений пока нет …