РЕШЕННЫЙ! (См. Редактировать)Инициализация частного массива C++
Я пытаюсь инициализировать пару массивов, которые являются частными членами класса. Я пытаюсь использовать публичную функцию для инициализации этих частных массивов. Мой код выглядит следующим образом:
void AP_PitchController::initGains(void){
_fvelArray[] = {20, 25, 30, 60, 90, 130, 160, 190, 220, 250, 280};
_kpgArray[] = {6.0, 6.0, 8.0, 4.0, 3.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5};
_kdgArray[] = {2000, 2000, 1900, 300, 300, 200, 200, 200, 200, 200, 200};
_kigArray[] = {0.1, 0.1, 0.2, 0.25, 0.3, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5};
}
Эти массивы находятся в заголовочном файле AP_PitchController, где они были объявлены закрытыми. Когда я пытаюсь скомпилировать код, я получаю один из этих сообщений для каждой инициализации:
/../AP_PitchController.cpp:106: error: expected primary-expression before ']' token /../AP_PitchController.cpp:106: error: expected primary-expression before '{' token /../AP_PitchController.cpp:106: error: expected `;' before '{' token
А вот мои личные заявления:
Private:
uint8_t _fvelArray[];
float _kpgArray[];
float _kdgArray[];
float _kigArray[];
Кто-нибудь знает, что я делаю неправильно, чтобы инициализировать эти массивы по вызову initGains()?
EDIT:
Я нашел ответ в одном из связанных с этим вопросов.
Все, что нужно сделать, это предоставить размер массива для инициализации:
static float _kpgArray[11];
А затем инициализировать его вне функции в файле .cpp:
uint8_t AP_PitchController::_fvelArray[11] = {20, 25, 30, 60, 90, 130, 160, 190, 220, 250, 280};
Спасибо за ваш вход!
частный не имеет ничего общего с этими ошибками. – Almo
Посмотрите на связанные вопросы справа. – codah