Любая переменная, объявленная / определенная в глобальной области видимости, имеет полное время жизни до завершения кода.
Если вы хотите, чтобы ваш Helper helpers[];
был доступен только в Car.cpp
, тогда только вы должны объявить егокак static
;иначе пусть будет глобальным.Другими словами,
Helper helpers[]; // accessible everywhere if `extern`ed to the file
static Helper helpers[]; // accessible only in `Car.cpp`
Редактировать : As @andrewdski предложил в комментарии ниже;вы должны сделать helpers[]
переменной static
, так как вы используете ее в этом файле;хотя Helper
снаружи не видно.В C ++, если два совершенно разных модуля имеют одинаковые именованные глобальные переменные, компилятор молча создает беспорядок, ссылаясь на одну и ту же область памяти.