如何检查它是一个类的哪个衍生物,以及如何在列表中使用它们的结构

How can I check which derivate is it of one class and how can I work with their structure in a list

本文关键字:列表 结构 衍生物 一个 何检查 检查      更新时间:2023-10-16

我有以下问题,希望伟大的社区可以帮助我。如果我有一个班级:

class one
{
private:
  int data;
public:
  one();
  void safe();
  void load();
};

然后是第一类的 2 个导数类:

class two: public one
{
private:
  int data2;
public:
  two();
  safe();
  load();
};
class three: public one
{
private:
  int    data3;
  string data4;
public:
  three();
  void safe();
  void load();
};

现在我必须在这些类中存储数据。类的对象存储在列表中。在此示例中,这些列表的一个元素可以是类二或类三的一个对象。现在,如果我必须将列表的内容保存在文件中,我需要获取data2的数据,或者如果我有另一个对象,我需要data3data4

如何检查它是哪个派生的,以及如何获取对象的数据?我的意思是,这必须是可能的,因为它们都是一个的衍生物。

如果您需要列表:

std::list<one*> myList;

如果您需要像数组这样的集合

std::vector<one*> myVec;

您可以在此处查看有关如何从列表std::list中获取和处理数据的更多详细信息:http://www.cplusplus.com/reference/list/list/

对于std::vector<>这里:http://www.cplusplus.com/reference/vector/vector/

对于你的第二个问题:

如何检查它是哪个派生的,以及如何获取 对象?

由于您已经创建了继承并将对象作为指针保留在容器中,如std::liststd::vector,系统可以使用多态性识别对象的动态类型,并根据对象的类型调用函数。更多详情请点击此处:http://www.cplusplus.com/doc/tutorial/polymorphism/