张大帅哥_ 2022-08-19 19:22 采纳率: 63.6%
浏览 73

C++ Qt QList里放入同父类的不同子类对象

怎么在Qt的QList或QMap中放入同一个父类的不同子类对象?
如下面代码,往里面加入Dog和Cat后,提取出来却变成Animal了

class Animal
{
public:
    int a = 0;
};
class Dog : public Animal
{
public:
    int a = 1;
};
class Cat : public Animal
{
public:
    int a = 2;
};
QList<Animal> animals;
animals.append(Dog());
animals.append(Cat());

foreach (auto iter, animals) {
    cout << iter.a << endl;
}

输出:

0
0
0
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-08-19 19:45
    关注

    你不能各自定义一个a变量啊。只需要保留基类的变量a,子类构造函数中给a设定不一样的值。
    三个类各自定义变量a的话,相互之间是没有关系的,它又不是类的虚函数,还有多态性

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月19日