包括Windows标头与用户定义的类名冲突

时间:2012-06-01 17:54:47

标签: c++ windows qt include

以下关于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'尚未声明

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

1 个答案:

答案 0 :(得分:3)

  1. #undef MessageBox(和其他有冲突的名字)或

  2. 重命名您的课程,或

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