首页 > 解决方案 > 如何在 C++ 中检查对象的类型(它们属于哪个类)

问题描述

我遇到的问题就是这个。我有一个 Event 类型的数组(Event 是 Conference 类的基类)。在数组中我放了 5 个对象(在我的例子中,三个是 Event 类型,两个来自 Conference)。在练习中,我被要求创建两个二进制文件,一个用于 Event 类型的对象,一个用于 Conference 类型的对象。接下来我必须检查数组中对象的类型,如果它来自 Event 类型,则将其写入 Events.bin(事件类型对象的二进制文件),如果它们是 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));
            }
        }

两者都做同样的事情

提前致谢。

标签: c++oopobject-type

解决方案


推荐阅读