Ну, во-первых, оператор ==
используется для сравнения, а не присвоения. Для назначения вы хотите один =
. Во-вторых, ваш код не переносим и, возможно, поврежден, потому что способ хранения вашего объекта на диске в виде последовательности байтов не обязательно совпадает с тем, как он хранится в памяти как объект T
. Это потому, что разные компьютеры / платформы / компиляторы представляют двоичные данные по-разному. Кроме того, как Влад упоминает в комментарии ниже, если экземпляры T
содержат внутренние указатели (например, std::string
), то ваша программа просто развалится.
Вам, вероятно, следует заглянуть в библиотеку сериализации или хотя бы использовать Cost iostreams для сериализации вашего объекта в текстовый формат, а затем использовать istream_iterator
для чтения их с диска .