Qt中的c ++继承基础知识

时间:2017-01-24 18:54:24

标签: c++ class inheritance

我想扩展一个带有附加属性的类,然后为这个新类分配一个基类对象。这是我的示例代码:

class QExtFileInfoList: public QFileInfoList
{
  public:
    bool newProperty;
}
QDir var1 = "/abc/def";
QFileInfoList var2 = var1.entryInfoList();     // works
QExtFileInfoList var3 = var1.entryInfoList();  // does not work

代码返回:

conversion from 'QFileInfoList {aka QList<FileInfo>}' 
      to non-scalar type 'QElfFileInfoList' requested

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

你已经定义了一个新类。但是谁在创造它们? QDir不会为您创建已创建的类。

有三种解决方案:

  1. 将转换器函数QFileInfoList写入QElfFileInfoList
  2. 为QElfFileInfoList编写一个构造函数,仅获取一个QFileInfoList引用(如果要求转换单个实例,这将自动转换)
  3. 从QDir派生一个新类,为您创建自己的类。
  4. 我会按照这些顺序选择它们。