1

上記の例をコンパイルしようとしていますが、コンパイルされません (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 のプロトタイプは、オブジェクトではなく参照を期待しています。コードを変更する方法がわからないので、実際には機能します。

QHash メンバーを AnimalModel に追加し、コンストラクターで初期化してから参照を返すと、プログラムがクラッシュします。

4

1 に答える 1

1

戻り値の型がQt4 から Qt5 にroleNames変更されました。したがって、Qt4 に対して Qt5 の例をコンパイルしようとしているようです。const QHash<int,QByteArray> &QHash<int,QByteArray>

于 2013-10-01T20:07:14.023 に答える