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' 尚未声明

我的 Desktop::MessageBox 与 Windows 定义的 MessageBoxA 冲突。c++ 中这个问题的标准解决方案是什么?

4

1 回答 1

3
  1. #undef MessageBox(和其他冲突的名称),或

  2. 重命名您的班级,或

  3. 将您对 Windows API 的使用封装到单独的 .cpp 文件中,这样您就不需要在任何地方都包含 Windows 标头,从而(很大程度上)避免了这个问题。

于 2012-06-01T17:57:14.670 回答