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
返回什么?
它按值返回QFileInfoList
。 QFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const
【参考方案1】:
你已经定义了一个新的类。但谁在创造它们? QDir 不会为您创建您已创建的类。
想到了 3 个解决方案:
-
写一个转换函数QFileInfoList到QElfFileInfoList
为 QElfFileInfoList 编写一个构造函数,只接受一个 QFileInfoList 引用(如果您要求转换单个实例,这将自动转换)
从 QDir 派生一个新类,为您创建自己的类。
我会按这些顺序选择它们。
【讨论】:
以上是关于Qt中的c++继承基础的主要内容,如果未能解决你的问题,请参考以下文章
类QLayout和类QMainWindow Qt c++之间的继承