2014-09-02 3 views
0

QFileDialog::getOpenFileNameQFileDialog::getSaveFileName이 사용하는 기본 디렉터리 경로를 저장하고 업데이트하려고합니다. 이를 위해, 나는이 제 3 공통 기능 주위에 래퍼 함수를 ​​만들었습니다 :정적 멤버 함수를 인수로 전달

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()'기능을 사용하지 마십시오 : 문제는 _VARIADIC_MAX 해결했다 재정? – vahancho

+0

코드가 정상적으로 표시됩니다. 오류가 발생한 행이 선인지 확인하십시오. –

+0

** vahancho ** :이 경우 QFileDialog :: getOpenFileName 및 QFileDialog :: getSaveFileName과 같은 정적 함수를 사용할 수 없기 때문에. 수동으로 QFileDialog를 만들 수 있지만이 경우 오류가 발생하는 이유를 알고 싶습니다. ** Marco A. ** : MSVC에서 오류 알림을 두 번 클릭하면 해당 줄로 커서가 이동합니다. 줄 번호도 일치합니다. –

답변

관련 문제