2014-09-02 111 views
0

我想存儲和更新QFileDialog::getOpenFileNameQFileDialog::getSaveFileName使用的默認目錄路徑。爲此,我創建包裝函數的兩個第三常見功能周圍:傳遞一個靜態成員函數作爲參數

QString GetSaveFile (QWidget *parent, const QString &title, const QString &desc) 
{ 
    return GetFile (&QFileDialog::getSaveFileName, parent, title, desc); 
} 

QString GetOpenFile (QWidget *parent, const QString &title, const QString &desc) 
{ 
    return GetFile (&QFileDialog::getOpenFileName, parent, title, desc); 
} 

QString GetFile (std::function <QString (QWidget *, const QString&, const QString&, const QString&, QString*, QFileDialog::Options)> func, 
       QWidget *parent, const QString &title, const QString &desc) 
{ 
    // this produces C2064 
    QString path = func (parent, title, CurrentDir, desc, 0, 0); 
    if (!path.isEmpty()) 
     UpdateCurrentDir (QFileInfo (path).absoluteDir().path()); 
    return path; 
} 

然而,在編譯過程中,我得到

error C2064: term does not evaluate to a function taking 6 arguments 

但我的第一個參數一個函數,它接受6參數。我究竟做錯了什麼?

+0

你爲什麼不使用'QFileDialog :: saveState和()'和'QFileDialog :: restoreState()'的功能呢? – vahancho 2014-09-02 11:57:55

+0

你的代碼看起來很好,你確定這行是產生錯誤的行嗎? – 2014-09-02 11:59:54

+0

** vahancho **:因爲在這種情況下,我無法使用靜態函數QFileDialog :: getOpenFileName和QFileDialog :: getSaveFileName。我可以手動創建一個QFileDialog,但我想知道爲什麼我在這種情況下得到一個錯誤。 ** Marco A. **:當我雙擊MSVC中的錯誤通知時,光標跳轉到該行。行號也匹配。 – 2014-09-02 12:03:24

回答

相關問題