C ++ Копирование объектов из файла в массив - PullRequest
0 голосов
/ 28 октября 2010

Привет, нужно скопировать записанные объекты в файл, чтобы скопировать в массив. Но следующий код выдает ошибку

   T Obj
   T arr[20];
   while(file.read((char*)&Obj,sizeof(Obj))){
          int i=0;
             i++

            arr[i]==Obj;
            }

Ошибка C2678: двоичный файл '==': не найден оператор, который принимает левый операнд типа

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

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

Вам, вероятно, следует заглянуть в библиотеку сериализации или хотя бы использовать Cost iostreams для сериализации вашего объекта в текстовый формат, а затем использовать istream_iterator для чтения их с диска .

0 голосов
/ 28 октября 2010

В C ++ '==' является оператором равенства, если вы хотите присвоить объект массиву 'arr', вы должны использовать один '='. Также чтение объектов непосредственно из двоичного файла является «сомнительным». Вместо этого вы должны использовать «потоковые операторы» (Google it).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...