Ну, во-первых, оператор ==
используется для сравнения, а не для присвоения. Для назначения вам нужен один =
. Во-вторых, ваш код не переносится и, возможно, не работает, поскольку способ хранения вашего объекта на диске в виде последовательности байтов не обязательно совпадает с тем, как он хранится в памяти как объект T
. Это связано с тем, что разные компьютеры/платформы/компиляторы представляют двоичные данные по-разному. Плюс, как упоминает Владелец в комментарии ниже, если экземпляры T
содержат внутренние указатели (например, std::string
), тогда ваша программа просто развалится.
Вы, вероятно, следует искать в serialization library, или по крайней мере использовать C++ iostreams для сериализации объекта в текстовом формате, а затем использовать istream_iterator
читать их с диска.
Ну, во-первых, у вас нет точки с запятой после i ++. – Cam
... и i является локальным, поэтому код всегда будет обращаться к arr [1] – Vlad