我现在正在尝试编译 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 构造函数中的任何更改,但我只看到一个新的 one overload ,所以我的问题是我需要在 sqlitebrowser 中更改什么才能编译它。
最佳答案
根据 QString in Qt 4.6 , 只有 one candidate可以将指针作为参数。但是 Qt 4.7 中有两个 QString 构造函数可以将指针作为参数。我认为这引发了编译器错误。
您可以强制它像 Qt 4.6 一样运行,如下所示:
name((const char*) 0)
关于c++ - Qt 4.6 和 4.7 之间 QString 类的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650208/