我研究了一些Qt3代码,我的环境是QT 4商用,VS2010用qt-addin。当我添加预处理器“QT3_SUPPORT”时,QString总是带有一些错误信息:
1> main.cpp
1>main.cpp(18): error C2248: 'QString::operator QNoImplicitBoolCast' : cannot access private member declared in class 'QString'
1> c:\qt\4.8.4\include\qtcore\../../src/corelib/tools/qstring.h(561) : see declaration of 'QString::operator QNoImplicitBoolCast'
1> c:\qt\4.8.4\include\qtcore\../../src/corelib/tools/qstring.h(62) : see declaration of 'QString'
1>
1>Build FAILED.
我的代码是这样的:
#include <QtCore/QCoreApplication>
#include <QString>
#include <Qt3Support>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString b;
std::cout << "B" << b<<"\n";
return a.exec();
}
错误信息始终使用QString
std::cout << "B" << b<<"\n";
我用谷歌搜索了错误,但是找到了一些关于将qt3 coe变为qt4的信息,他们说我应该添加QT3_SUPPORT,包括,我这样做,但仍然有这个错误,所以我很困惑,没有解决方案来应对这个错误
答案 0 :(得分:1)
没有&lt;&lt; basic_ostream(std :: cout)和QString的运算符。
但是有一个类可以封装std :: cout以供Qt使用:
QTextStream cout(stdout);
cout << "B" << b << "\n";
另一种方法是将其显式地转换为char *:
std::cout << "B" << b.toLocal8Bit().data() << "\n";