错误C2146:语法错误:缺少';'在标识符之前' m_ball' C ++,MFC

时间:2015-02-12 19:50:30

标签: c++ mfc

我心爱的错误C2146。我检查了可能的错误,我找不到一个(据我所知,有所需要的;在右键单击Ball-> GoToDefinition后,它正确地显示了类声明)

BallMasterDoc.h

#pragma once
class CBallMasterDoc : public CDocument
{
private:
    Ball m_ball; //syntax error : missing ';' before identifier 'm_ball'
    Pod m_pod; //syntax error : missing ';' before identifier 'm_pod'

BallMasterDoc.cpp

#include "Pod.h"
#include "Ball.h"
#include "BallMasterDoc.h"

Ball.h

#pragma once

const COLORREF BLUE = RGB(0, 0, 255);
extern int g_iRadius, g_iHeight;
extern int g_iWidth, g_iMaxWidth;//pod...

class Ball
{
public:
    Ball();
    ~Ball();
    BOOL Move(CPoint podPosition);
    BOOL Start(){ return m_bStart; }
    BOOL Collision(){ return m_bCollision; }
    BOOL End(){ return m_bEnd; }
    CRect GetArea();
private:
    BOOL CheckCollision(CPoint podPosition);
    float m_fDirection;
    int m_iB; // y = ax + B
    BOOL m_bUpDown;//true - up
    BOOL m_bStart;
    BOOL m_bCollision;
    BOOL m_bEnd;
    CPoint m_ballCentre;
    CPoint m_collisionPoint;
};

Pod.h

#pragma once
const COLORREF BLACK = RGB(0, 0, 0);
extern int g_iWidth, g_iMaxWidth;
class Pod
{
public:
    Pod();
    ~Pod();
    BOOL MoveLeft();
    BOOL MoveRight();
    CPoint Position() { return m_Middle; }
private:
    CPoint m_Middle;
};

请告诉我错误。

修改

所有包含都在cpp文件中(由向导和我的文件生成)我只显示这3个原因,在这种情况下休息是不受影响的。我从魔法书中学习MFC,名为:Microsoft Visual C ++ Windows Applications by Example,其中包括转到cpp文件(即使我觉得它很奇怪,书也远不是最好的向导支持这种风格......)

2 个答案:

答案 0 :(得分:0)

好的,我把#include"Ball.h"/"Pod.h"放在 BallMasterDoc.h 中它解决了这个问题,但这并不令人满意的答案提供魔法书的代码曾经工作过(不是这个确切的程序和我大多数代码都没有工作)但现在不重要

答案 1 :(得分:0)

由于BallMasterDoc.h取决于对BallPod类的了解,因此该头文件应包含Ball.hPod.h - 而不是依赖于哪一个.cpp包括BallMasterDoc.h以包含其他标题。

您发布的BallMasterDoc.cpp看起来不错,因此您的错误可能来自另一个.cpp文件,其中包含BallMasterDoc.h但未包含该标头所需的标头。