编译时出现以下错误:
3>Time Elapsed 00:00:00.10
2>ClCompile:
2> Main.cpp
2> CWnd.cpp
2>c:\repo\~\clabel.hpp(11): error C2061: syntax error : identifier 'CWnd'
2>c:\repo\~\cbutton.hpp(11): error C2061: syntax error : identifier 'CWnd'
2>c:\repo\~\cmainwnd.hpp(9): error C2504: 'CWnd' : base class undefined
2> CMainWnd.cpp
2> CLabel.cpp
2> CException.cpp
2> CButton.cpp
2> Generating Code...
2>
2>Build FAILED.
我的项目看起来像这样(每个部分包含上面一级的头文件)
DefaultHeader.hpp : (windows.h, includes CInterface.hpp, other header files)
-- CInterface.hpp : (includes DefaultHeader.hpp, CWnd.hpp, CLabel.hpp and CButton.hpp)
-- -- CWnd.hpp : (includes CInterface.hpp)
-- -- CLabel.hpp : (includes CInterface.hpp)
-- -- CButton.hpp : (includes CInterface.hpp)
这是CWnd
的定义#ifndef __CWnd_hpp__
#define __CWnd_hpp__
#pragma once
#include "CInterface.hpp"
class CWnd
{
...
};
#endif // __CWnd_hpp__
我不确定为什么在尝试访问CWnd时出现此错误,因为CWnd(及其所有成员)已明确定义。
错误发生的3行(剪掉,供参考):
CLabel ( CWnd* wndParent, INT iX, INT iY, INT iWidth, INT iHeight, LPCTSTR lpszCaption );
CButton ( CWnd* wndParent, INT iX, INT iY, INT iWidth, INT iHeight, LPCTSTR lpszCaption );
class CMainWnd : public CWnd
最奇怪的部分是Itellisense看到没有错误,直到我编译,然后它们出现并在2秒后消失。
感谢任何帮助。
答案 0 :(得分:0)
结果是CInterface锁定的头文件,在某些文件中不包括CWnd.hpp。我通过让所有文件包含最高级别包含文件DefaultHeader.hpp而不是相应的包含文件CLabel.hpp,CButton.hpp等来修复此问题。