error C2146: syntax error : missing ';' before identifier 'm_ball' C++, MFC

error C2146: syntax error : missing ';' before identifier 'm_ball' C++, MFC

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

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 个,因为在这种情况下我不涉及其余部分。我正在从名为 Microsoft Visual C++ Windows Applications by Example 的魔法书中学习 MFC,其中所有内容都包含转到 cpp 文件(即使我觉得它很奇怪而且这本书远不是支持这种风格的最佳向导......)

好的,我把 #include"Ball.h"/"Pod.h" 放在 BallMasterDoc.h 中,它解决了这个问题,但这不是令人满意的答案,因为魔法书中的代码曾经有效(好吧不是这个确切的程序,对我来说大部分代码无论如何都不起作用)但现在没关系

由于 BallMasterDoc.h 取决于对 BallPod 类 的了解,因此 header 文件应包括 Ball.hPod.h -- 而不是依赖任何 .cpp 包含 BallMasterDoc.h 来包含其他 headers.

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