Qt中的c++继承基础

Posted

技术标签:

【中文标题】Qt中的c++继承基础【英文标题】:c++ Inheritance Basics in Qt 【发布时间】:2017-01-24 18:54:23 【问题描述】:

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

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

我该如何解决这个问题?

【问题讨论】:

entryInfoList 返回什么? 它按值返回QFileInfoListQFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const 【参考方案1】:

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

想到了 3 个解决方案:

    写一个转换函数QFileInfoList到QElfFileInfoList 为 QElfFileInfoList 编写一个构造函数,只接受一个 QFileInfoList 引用(如果您要求转换单个实例,这将自动转换) 从 QDir 派生一个新类,为您创建自己的类。

我会按这些顺序选择它们。

【讨论】:

以上是关于Qt中的c++继承基础的主要内容,如果未能解决你的问题,请参考以下文章

C++、命名空间、继承类和 Qt 上的名称查找

Qt中的继承问题

Qt 和 C++:双重继承与组合?

类QLayout和类QMainWindow Qt c++之间的继承

c ++是不是可以继承一个类,但不能继承该类的继承? (qt)

深入浅出C++继承:从基础到实践