Изменения в классе QString между Qt 4.6 и 4.7 - PullRequest
1 голос
/ 13 апреля 2011

Я сейчас пытаюсь скомпилировать sqlitebrowser с Qt 4.7, во время выполнения компиляции я получаю его ошибку:

g++ -c -pipe -O2 -Wall -W -DQT_NO_DEBUG -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/share/qt4/mkspecs/freebsd-g++ -I. -I/usr/local/include/qt4/QtCore -I/usr/local/include/qt4/QtGui -I/usr/local/include/qt4/Qt3Support -I/usr/local/include/qt4 -Isqlite_source -I.moc -I/usr/local/include -o .obj/extendedmainform.o extendedmainform.cpp
In file included from findform.h:24,
                 from form1.h:31,
                 from extendedmainform.h:4,
                 from extendedmainform.cpp:1:
sqlitedb.h: In constructor 'DBBrowserField::DBBrowserField()':
sqlitedb.h:44: error: call of overloaded 'QString(int)' is ambiguous
/usr/local/include/qt4/QtCore/qstring.h:428: note: candidates are: QString::QString(const QByteArray&)
/usr/local/include/qt4/QtCore/qstring.h:426: note:                 QString::QString(const char*)
/usr/local/include/qt4/QtCore/qstring.h:728: note:                 QString::QString(const QString&)
/usr/local/include/qt4/QtCore/qstring.h:106: note:                 QString::QString(QChar)
/usr/local/include/qt4/QtCore/qstring.h:105: note:                 QString::QString(const QChar*)
sqlitedb.h: In constructor 'DBBrowserIndex::DBBrowserIndex()':
sqlitedb.h:58: error: call of overloaded 'QString(int)' is ambiguous
/usr/local/include/qt4/QtCore/qstring.h:428: note: candidates are: QString::QString(const QByteArray&)
/usr/local/include/qt4/QtCore/qstring.h:426: note:                 QString::QString(const char*)
/usr/local/include/qt4/QtCore/qstring.h:728: note:                 QString::QString(const QString&)
/usr/local/include/qt4/QtCore/qstring.h:106: note:                 QString::QString(QChar)
/usr/local/include/qt4/QtCore/qstring.h:105: note:                 QString::QString(const QChar*)
sqlitedb.h: In constructor 'DBBrowserTable::DBBrowserTable()':
sqlitedb.h:73: error: call of overloaded 'QString(int)' is ambiguous
/usr/local/include/qt4/QtCore/qstring.h:428: note: candidates are: QString::QString(const QByteArray&)
/usr/local/include/qt4/QtCore/qstring.h:426: note:                 QString::QString(const char*)
/usr/local/include/qt4/QtCore/qstring.h:728: note:                 QString::QString(const QString&)
/usr/local/include/qt4/QtCore/qstring.h:106: note:                 QString::QString(QChar)
/usr/local/include/qt4/QtCore/qstring.h:105: note:                 QString::QString(const QChar*)
*** Error code 1

Я проверил документацию Qt (как 4.6, так и 4.7), чтобы увидетьлюбое изменение в конструкторе Qstring, но я вижу только новую одну перегрузку , поэтому мой вопрос, что мне нужно изменить в sqlitebrowser для его компиляции.

Ответы [ 2 ]

4 голосов
/ 13 апреля 2011

Согласно QString в Qt 4.6 , есть только один кандидат , который может принимать указатель в качестве аргумента.Но в Qt 4.7 есть два конструктора QString, которые могут принимать указатель в качестве аргумента.Я думаю, что это вызвало ошибку компилятора.

Вы можете заставить его вести себя как Qt 4.6 следующим образом:

name((const char*) 0)
0 голосов
/ 13 апреля 2011

Где бы вы ни создавали QString с int - вам нужно указать Qt, что вы подразумеваете под int

Если это действительное литеральное число, которое вы преобразуете в строку, используйте функцию QString ("% u"). Arg ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...