0

我研究了一些 Qt3 代码,我的环境是 QT 4 商业版,带有 qt-addin 的 VS2010。当我添加预处理器“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, include ,我这样做了,但仍然有这个错误,所以我很困惑并且没有解决这个错误的解决方案。

4

1 回答 1

1

basic_ostream (std::cout) 和 QString 没有 << 运算符。

但是有一个类可以封装 std::cout 以供 Qt 使用:

QTextStream cout(stdout);
cout << "B" << b << "\n";

另一种方法是将其显式转换为 char*:

std::cout << "B" << b.toLocal8Bit().data() << "\n";
于 2013-10-13T11:38:15.600 回答