CREATESTRUCT错误C4430:缺少类型说明符-假定为int.注意:C++不支持默认的int C:xdc



我正试图修改一个用旧版本的Visual Studio编写的项目。我现在使用Visual Studio 2010。当我打开项目时,它被自动转换为2010格式。然而,当我构建它时,我会得到以下错误:

错误1错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认的int C:\x\dcd\dcdchild.h 22 1

有问题的文件很小:

// dcdchild.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CDCDChildWnd frame
class CDCDChildWnd : public CMDIChildWnd
{
    DECLARE_DYNCREATE(CDCDChildWnd)
protected:
    CDCDChildWnd();         // protected constructor used by dynamic creation
// Attributes
public:
// Operations
public:
// Implementation
protected:
    virtual ~CDCDChildWnd();
    virtual CDCDChildWnd::PreCreateWindow(CREATESTRUCT& cs);
    // Generated message map functions
    //{{AFX_MSG(CDCDChildWnd)
        // NOTE - the ClassWizard will add and remove member functions here.
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////

有问题的线路是:

virtual CDCDChildWnd::PreCreateWindow(CREATESTRUCT& cs);

我查阅了CREATESTRUCT的定义,它是:

typedef struct tagCREATESTRUCT {
  LPVOID    lpCreateParams;
  HINSTANCE hInstance;
  HMENU     hMenu;
  HWND      hwndParent;
  int       cy;
  int       cx;
  int       y;
  int       x;
  LONG      style;
  LPCTSTR   lpszName;
  LPCTSTR   lpszClass;
  DWORD     dwExStyle;
} CREATESTRUCT, *LPCREATESTRUCT;

所以它确实包括变量类型int。问题是,我该如何解决它?

声明virtual CDCDChildWnd::PreCreateWindow(CREATESTRUCT& cs);无效。它应该是这样的:

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

您的方法没有声明返回类型:

virtual CDCDChildWnd::PreCreateWindow(CREATESTRUCT& cs);

你的意思可能是:

virtual BOOL CDCDChildWnd::PreCreateWindow(CREATESTRUCT& cs);

(错误消息指的是,在早期版本的C中,您可以省略返回类型,在这种情况下假设为int,但这在C++中是不允许的。)

最新更新