代码之家  ›  专栏  ›  技术社区  ›  cyber101

vc++未声明的标识符,尽管其已声明

  •  -1
  • cyber101  · 技术社区  · 7 年前

    我在tetrisdoc中获得了“m\u colorGrid”的未声明标识符。h头文件,尽管其声明为:

    请参见下面的代码段:

    // TetrisDoc.h : interface of the CTetrisDoc class
    //
    
    
    #pragma once
    #include "Figure.h"
    
    typedef CList<int> IntList; 
    const int FIGURE_ARRAY_SIZE = 7; 
    class CTetrisDoc : public CDocument
    {
    protected: // create from serialization only
        CTetrisDoc();
        DECLARE_DYNCREATE(CTetrisDoc)
    public:
        virtual ~CTetrisDoc();
    
    
    private:
        ColorGrid m_colorGrid;
        Figure m_activeFigure, m_nextFigure;
        int m_iScore;
        IntList m_scoreList;
        const CRect NEXT_AREA, SCORE_AREA;
        static Figure m_figureArray[FIGURE_ARRAY_SIZE];
    
    // Operations
    public:
        void SaveScoreList();
        virtual void Serialize(CArchive& archive);
        int GetScore() const { return m_iScore; }
        const IntList* GetScoreList() { return &m_scoreList; }
        const ColorGrid* GetGrid() 
        { 
            ColorGrid* pm_colorGrid = &m_colorGrid;
            return pm_colorGrid;
        }
        const Figure& GetActiveFigure() { return m_activeFigure; }
        const Figure& GetNextFigure() { return m_nextFigure; }
        void LeftArrowKey(); 
        void RightArroyKey(); 
        void UpArrowKey(); 
        void DownArrowKey();
        BOOL Timer(); 
        void SpaceKey(); 
        enum COLOR {RED=0,BROWN=1,TURQUOISE=2,GREEN=3,BLUE=4,PURPLE=5,YELLOW=6};
        enum ORIENTATION { NORTH = 0, SOUTH = 1,  EAST = 2, WEST = 3 };
    
    
    // Overrides
    public:
        virtual BOOL OnNewDocument();
    #ifdef SHARED_HANDLERS
        virtual void InitializeSearchContent();
        virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
    #endif // SHARED_HANDLERS
    
    #ifdef _DEBUG
        virtual void AssertValid() const;
        virtual void Dump(CDumpContext& dc) const;
    #endif
    
    protected:
    
    // Generated message map functions
    protected:
        DECLARE_MESSAGE_MAP();
    
    private:
        void GameOver(); 
        BOOL NewGame(); 
        int AddScoreToList(); 
        void DeleteFullRows(); 
        BOOL IsRowFull(int iRow);
        void FlashRow(int iFlashRow);
        void DeleteRow(int iDeleteRow);
    
    #ifdef SHARED_HANDLERS
        // Helper function that sets search content for a Search Handler
        void SetSearchContent(const CString& value);
    #endif // SHARED_HANDLERS
    };
    

    以下是实际错误日志:

    错误8错误C2065:“m\U colorGrid”:未声明的标识符c:\users\ary\documents\visual studio 2013\projects\tetris\tetris\tetrisdoc。h 36 1俄罗斯方块

    以下是屏幕截图: enter image description here

    正如您所看到的,m\u colorGrid是在函数上方的私有标头中声明的。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Manivasakan    7 年前

    确保您已包括在内。h“ColorGrid”的头文件或添加了适当的引用。