0

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

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

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;
4

1 回答 1

0

一种选择是包含 MyCug 的标题

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

class MyCug;

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

然后,您必须在构造函数中实例化指针,例如

m_grid = new MyCug;

并在你的析构函数中删除

delete m_grid;

或者其他合适的地方。

alt。声明m_gridunique_ptr

class MyCug;

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

那么在构造函数中实例化它就足够了

m_grid.reset(new MyCug);
于 2013-10-04T11:00:03.867 回答