Несколько возможных причин, по которым при выводе из бинарного файла структуры на C++ теряется значение переменной salary:
- Несовпадение размеров структуры и суммы размеров заявленных внутри структуры типов. 4 Если размеры не совпадают, это может быть следствием автоматических выравниваний структуры. 4
- Отсутствие общего заголовочного файла. 2 В этом случае определения структуры должны быть в одном файле, чтобы они были идентичны. 2
- Использование указателей. 4 Если в структуре есть указатели, при записи в файл нужно использовать поэлементную запись структуры, а при записи указателя — домножить размер указателя на количество элементов, на которое он указывает. 4
Для решения проблемы также можно отключить выравнивание структуры при записи в файл с помощью директивы препроцессора pragma pack. 4