无法在C ++ MFC中声明实例变量

时间:2013-10-04 10:07:45

标签: c++ mfc

现在,我正在做这个教程:http://www.codeproject.com/Articles/20187/The-Ultimate-Grid-Beginner-s-Guide 请仔细看看,以便了解我的问题。

在必须声明MyCug网格类实例的部分,我遇到了问题。我已将Header文件包含在我的Class + App类中。但是当我想声明Instance时,会出现一个错误:错误C4430:缺少类型说明符 - 假定为int 在我要声明它的行上出错:

class CClassView : public CDockablePane { public:   
MyCug m_grid;

如果我在.cpp文件中声明它,它可以工作。但它不公开。 有没有解决方案的选择?我希望你理解我的问题

以下是一些代码:

#include "ViewTree.h"
class CClassToolBar : public CMFCToolBar
{
virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler)
{
    CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler);
}

virtual BOOL AllowShowOnList() const { return FALSE; }
};

class CClassView : public CDockablePane
{
public: 
MyCug m_grid;

1 个答案:

答案 0 :(得分:0)

一个选项是包含MyCug的标题

另一种选择是转发声明MyCug,然后将其声明为指针

class MyCug;

class CClassView : public CDockablePane
{
public:
  MyCug* m_grid;
...
}

然后必须在构造函数中实例化实例

m_grid = new MyCug;

并在析构函数中删除

delete m_grid;

或在其他合适的地方。

ALT。将m_grid声明为unique_ptr

class MyCug;

class CClassView : public CDockablePane
{
public:
  std::unique_ptr<MyCug*> m_grid;
...
}

然后在构造函数

中实例化它就足够了
m_grid.reset(new MyCug);