我正在尝试编译上面的示例,但是它没有编译(windows,Mingw 4.8)。错误是:
In file included from ..\abstractitemmodel\main.cpp:40:0: ..\abstractitemmodel\model.h:77:27: error: conflicting return type specified for 'virtual QHash<int, QByteArray> AnimalModel::roleNames() const'
QHash<int,QByteArray> roleNames() const;
^
In file included from ..\..\..\..\include\QtCore/QAbstractListModel:1:0,
from ..\abstractitemmodel\model.h:40,
from ..\abstractitemmodel\main.cpp:40:
..\..\..\..\include\QtCore/qabstractitemmodel.h:234:43: error: overriding 'virtual const QHash<int, QByteArray>& QAbstractItemModel::roleNames() const'
virtual const QHash<int,QByteArray> & roleNames() const;
显然,QAbstractListModel 中的原型需要一个引用而不是对象。我不知道如何更改代码,因此它实际上可以工作。
如果我向 AnimalModel 添加一个 QHash 成员,在构造函数中对其进行初始化,然后返回对它的引用,程序就会崩溃。