У меня проблема вот в чем. У меня есть массив типа Event (Event - это базовый класс класса Conference). В массив я помещаю 5 объектов (в моем случае три типа Event и 2 из Conference). В упражнении меня просят создать два двоичных файла: один для объектов типа Event и один для объектов типа Conference. Затем я должен проверить тип объектов в массиве, если он относится к типу Event, он записан в Events.bin (двоичный файл для объектов типа event), если они относятся к типу Conference, они записаны в Conference.bin. Для этого я использую typeid()
, но когда я читаю файлы, вместо трех объектов в Events.bin у меня есть все пять, то же самое касается другого файла. Вот код, который я использую для проверки типа и записи их в файл:
for (int k = 0; k < N; k++) {
if (typeid(arr[k]) == typeid(Conference)) {
boutconferences.write((char*)&arr[k], sizeof(Conference));
}else {
boutevents.write((char*)&arr[k], sizeof(Event));
}
}
Вторая попытка:
for (int k = 0; k < N; k++) {
if (typeid(arr[k]) == typeid(Conference)) {
boutconferences.write((char*)&arr[k], sizeof(Conference));
}
if(typeid(arr[k])==typeid(Event)) {
boutevents.write((char*)&arr[k], sizeof(Event));
}
}
Оба делают то же самое
Спасибо за аванс.