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

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日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助