Qt 4.6으로 작성된 라이브러리를 컴파일하려고합니다. 현재 사용중인 Linux 머신에는 Qt 4.7 만 설치되었습니다. 다음 코드 부분 :Qt 4.7에서 QString (const char *) 생성자로 강제 호출
/*file try.h*/
void fileOpen(QString s = NULL) ;
/*file try.cpp*/
void MainWindow::fileOpen(QString s) {
QString filename ;
if(s.isNull()) filename = QFileDialog::getOpenFileName(
this,
"Choose a file",
".",
"Source file (*.)");
else filename = s ;
}
다음과 같은 오류와 함께 컴파일 (내가 cmake를 사용하지만, 해당 라인의 코드는 위의 하나입니다) :
In member function ‘virtual int MainWindow::qt_metacall(QMetaObject::Call, int,
void**)’:
/homes/combi/hodorog/Developments/axelOld/build/axel/src/QGui/moc_MainWindow.cxx:141:26:
error: conversion from ‘long int’ to ‘QString’ is ambiguous
/homes/combi/hodorog/Developments/axelOld/build/axel/src/QGui/moc_MainWindow.cxx:141:26:
note: candidates are:
/usr/include/QtCore/qstring.h:426:43: note: QString::QString(const char*)
/usr/include/QtCore/qstring.h:105:14: note: QString::QString(const QChar*)
그래서 나는이 문제를 추측하고 QT에 있다는 것입니다 . 4.7. Qt 4.6에서 포인터를 인수로 취할 수있는 두 개의 QString 생성자가 있습니다 (컴파일 오류에 나열된 것처럼). 포인터를 인수로 취할 수있는 단 하나의 QString 생성자가 있습니다. QString이 const char *를 인수로 사용하여 생성자를 호출하도록하려면 어떻게해야합니까?
당신은0
와
QString
객체를 생성하려고
으로 변경해야합니다. 실제로 문제였습니다. 지금 일하고 있습니다, 고마워요. – madalina