0

コンパイル時に次のエラーが発生します。

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.

私のプロジェクトは次のようになります (各部分には 1 レベル上のヘッダー ファイルが含まれます)

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 秒後にエラーが表示されて消えることです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

ヘッダー ファイル CInterface がロックされ、一部のファイルに CWnd.hpp が含まれていないことが判明しました。対応するインクルード ファイル CLabel.hpp、CButton.hpp などの代わりに、すべてのファイルに最高レベルのインクルード ファイル DefaultHeader.hpp を含めることで、この問題を修正しました。

于 2012-07-09T05:38:53.047 に答える