Запись классов в бинарный  файл — как исправить ошибку?
Прочитайте про указатели. Когда у меня только появился компьютер, я хотел поделиться игрой с другом и скопировал на дискету ярлычок с рабочего стола. Разумеется, эта идея была обречена на провал.  Ваш код пытается сделать примерно то же самое. В бинарном представлении класса data есть одно поле float N которое успешно записывается в файл, и второе float *ti, которое является всего лишь адресом. После того как вы считываете данные из файла, он указывает на какое-то место в памяти где может быть что угодно, но не тот массив, который вы ожидаете увидеть.
А исправить можно например так. Данные для наглядности пишем в текстовый файл.
Записывать таким образом можно только POD типы. А указатель делает твой класс не-POD.
Хотя на самом деле даже POD структуры записывать так просто не получится, ибо у структур (и классов, само собой) есть такое понятие, как выравнивание полей. И это самое выравнивание может отличаться на разных платформах, у разных компиляторов, и даже один и тот же компилятор может менять выравнивание в зависимости от настроек. А можно еще вспомнить endianess.
Как вариант, глянь в сторону protobuf, там все эти проблемы уже решены.