【问题标题】:c++ Inheritance Basics in QtQt中的c++继承基础
【发布时间】: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

标签: c++ class inheritance


【解决方案1】:

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

想到了 3 个解决方案:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多