0

Qtプロジェクトの次のインクルードは、ユーザー定義クラスと競合しています。

#ifdef Q_OS_WIN
#include "qt_windows.h"
#include "qwindowdefs_win.h"
#include <shellapi.h>
#endif

コードスニペット:

 if (Desktop::MessageBox::question(this, tr("I am ready?"),
                                     tr("I am not ready yet!?")) == QDialog::Rejected )
            {
                TRACE("Dialog rejected. I am not ready yet.");
                return;
            }

エラー: \ Desktop \ Gui \ MainScreen.cpp:953:エラー:'Desktop::MessageBoxA'が宣言されていません

デスクトップ::MessageBoxがWindowsで定義されたMessageBoxAと競合しています。C ++でのこの問題の標準的な解決策は何ですか?

4

1 に答える 1

3
  1. #undef MessageBox(およびその他の競合する名前)、または

  2. クラスの名前を変更するか、

  3. Windows API の使用を個別の .cpp ファイルにカプセル化して、どこにでも Windows ヘッダーを含める必要がないようにして、(大部分) 問題を回避します。

于 2012-06-01T17:57:14.670 に答える