0

現在、このチュートリアルを行っています: http://www.codeproject.com/Articles/20187/The-Ultimate-Grid-Beginner-s-Guide 私の問題を理解できるように、簡単に見てください。

MyCug グリッド クラスのインスタンスを宣言する必要がある部分で、問題が発生しました。クラス + アプリ クラスにヘッダー ファイルを含めました。しかし、インスタンスを宣言したいとき、エラーがあります: エラー 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;
4

1 に答える 1

0

1 つのオプションは、MyCug のヘッダーを含めることです。

別のオプションは、MyCug を前方宣言してから、ポインターとして宣言することです。

class MyCug;

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

次に、たとえばコンストラクターでポインターをインスタンス化する必要があります

m_grid = new MyCug;

デストラクタで削除します

delete m_grid;

または他の適切な場所で。

代替。m_gridとして宣言するunique_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 に答える