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 には << 演算子はありません。

しかし、Qt で使用するために std::cout をカプセル化できるクラスがあります。

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

別の方法は、明示的に char* にキャストすることです。

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