簡體   English   中英

為什么 MSVC 在用正確的簽名覆蓋函數時會產生 C3668 錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM