Вылезает ошибка при объявлении константы:
warning C4459: объявление "speedRange" скрывает глобальное объявление
В заголовочном файле находится:
typedef std::pair<int, int> Speed;
typedef std::map<Gear, Speed> SpeedRange;
extern const SpeedRange speedRange;
А в CPP
const SpeedRange speedRange = {
{ Gear::REVERSE, Speed(0, 20) },
{ Gear::NEUTRAL_GEAR, Speed(MIN_SPEED, MAX_SPEED) },
{ Gear::FIRST_GEAR, Speed(0, 30) },
{ Gear::SECOND_GEAR, Speed(20, 50) },
{ Gear::THIRD_GEAR, Speed(30, 60) },
{ Gear::FOURTH_GEAR, Speed(40, 90) },
{ Gear::FIFTH_GEAR, Speed(50, 150) }
};
Напишите как
extern const SpeedRange speedRange = {
//...
По умолчанию константы имеют внутреннее связывание, а потому без ключевого слова extern
данное объявление считается объявлением с внутренним связыванием и скрывает одноименное объявление с внешним связыванием, присутствующее в заголовке (который вы, возможно, забыли включить. Проверьте, включен ли заголовок в этот модуль).
Из стандарта C++ (3.5 Program and linkage)
— a variable that is explicitly declared const or constexpr and neither explicitly declared extern nor previously declared to have external linkage; or
Либо ваше определение константы находится в каком-нибудь блоке кода, а не в глобальном пространстве имен, в результате чего оно скрывает глобальное объявление.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый вечерНе могу понять действия рекурсивной функции при нахождении числа Фибоначчи