Для выяснения причины изменения значения переменной `m_command_file_len` с 3 на 1 после инициализации класса, необходимо проанализировать код класса и точки его использования в программах MainProgram и Menu. Возможно, значение переменной изменяется где-то в коде программы, либо происходит какая-то неожиданная манипуляция с данными.
Для предотвращения таких ошибок следует убедиться, что значение переменной `m_command_file_len` не меняется вне зависимости от того, где и как она используется. Обычно для этого можно использовать модификатор доступа `private` для этой переменной и создать методы `get` и `set` для доступа к ней извне класса. Также можно добавить проверки на корректность значений переменной в методах класса, чтобы избежать нежелательных изменений.
Кроме того, важно следить за тем, чтобы переменная всегда инициализировалась корректным значением в конструкторе класса. Если значение переменной задается при инициализации переменной, необходимо проверить, что это происходит правильно и не происходит случайного изменения значения после этого.
Если проблема не устраняется, рекомендуется внимательно просмотреть весь код программы, особенно места, где происходит работа с переменной `m_command_file_len`, и проверить его на наличие ошибок. Также можно использовать отладчик для поиска места изменения значения переменной во время выполнения программы.