Как проверить тип объектов (к какому классу) в C ++ - PullRequest
0 голосов
/ 29 мая 2020

У меня проблема вот в чем. У меня есть массив типа 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));
            }
        }

Оба делают то же самое

Спасибо за аванс.

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