[英]Why does MSVC produce C3668 error when overriding function with correct signature?
嘗試編譯從QAbstractItemModel
派生的代碼並覆蓋data
函數時出現錯誤,盡管簽名完全匹配。
以下代碼對我來說失敗了:
#include <QAbstractItemModel>
class A : public QAbstractItemModel
{
Q_OBJECT
public:
A();
virtual QVariant data(const QModelIndex &index, int role) const override;
};
出現以下錯誤:
C3668: 'A::data': method with override specifier 'override' did not override any base class methods
這只是在我使用的 MinGW 編譯器工作時使用 MS Visual C++ 14.0 時的問題。
編輯:
// A.cpp
QVariant A::data(const QModelIndex &index, int role) const
{
Q_UNUSED(index);
Q_UNUSED(role);
return QVariant();
}
您提供的方法簽名是正確的。 由於 VC 和 MinGW 的 Qt 安裝不同,問題可能是由於在 VC 版本中對 QAbstractItemModel.h 進行了不必要的修改(例如,您正在調試並無意識地編輯了頭文件)。
檢查標頭是否被修改,如果是,則從備份或其他安裝(相同版本)中恢復它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.