gpt4 book ai didi

c++ - 在高级类的 vector 中调用派生类的方法

转载 作者:行者123 更新时间:2023-11-28 02:31:23 25 4
gpt4 key购买 nike

我有一个高级类型类的 vector

vector<Parent> parents;

然后我添加一个派生类类型让我们说女儿和儿子

Son tempSon;
tempSon.setAge(7);
tempSon.setName("John");
parents.push_back(tempSon);
Daughter tempDaughter;
tempDaughter.setAge(9);
tempDaughter.setName("Emily");
parents.push_back(tempDaughter);

现在,当我遍历 vector 并调用方法时,问题是什么

parents.at(0).printName();

调用了父方法,它什么也不做,我想调用一个子方法。另一件事是我不知道传递的对象的类型(例如是儿子还是女儿)所以我不能转换它。我尝试使用 typeid(object) 并打印父类名称而不是子类。有什么想法吗?

最佳答案

为此,您应该将指针存储在 vector 中,而不是对象的拷贝,因为只会存储父部分。

一旦你存储了指针,你就可以转换到子类并调用正确的方法,或者简单地在父类中使方法成为虚拟方法并在不转换的情况下调用它。

关于c++ - 在高级类的 vector 中调用派生类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28876169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com