以下关于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 ++中这个问题的标准解决方案是什么?
答案 0 :(得分:3)
#undef MessageBox
(和其他有冲突的名字)或
重命名您的课程,或
将您对Windows API的使用封装到单独的.cpp文件中,这样您就不需要在任何地方都包含Windows标头,从而(很大程度上)避免了这个问题。