c++ - Qt 4.6 和 4.7 之间 QString 类的变化

标签 c++ constructor qt4 overloading

我现在正在尝试编译 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/

相关文章:

c++ - 没有执行策略的 std::transform_reduce 是否可移植?

c++ - 使用 vector 对字母数字字符串进行排序

c++ - 你能关闭 C++ 中的默认复制构造函数吗?

c++ - Qt/C++ - 如何存储配置数据

c++ - 透明QLabel

c++ - 带有成员函数指针的部分模板类特化

c++ - 如何计算两条线的交点

c# - 解决 'Virtual method call in constructor' 问题

来自构造函数的 C++ 虚函数

qt - QDockWidget 关闭按钮和 float 按钮的工具提示?