我心爱的错误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文件(即使我觉得它很奇怪,书也远不是最好的向导支持这种风格......)
答案 0 :(得分:0)
好的,我把#include"Ball.h"/"Pod.h"
放在 BallMasterDoc.h 中它解决了这个问题,但这并不令人满意的答案提供魔法书的代码曾经工作过(不是这个确切的程序和我大多数代码都没有工作)但现在不重要
答案 1 :(得分:0)
由于BallMasterDoc.h
取决于对Ball
和Pod
类的了解,因此该头文件应包含Ball.h
和Pod.h
- 而不是依赖于哪一个.cpp
包括BallMasterDoc.h以包含其他标题。
您发布的BallMasterDoc.cpp
看起来不错,因此您的错误可能来自另一个.cpp
文件,其中包含BallMasterDoc.h
但未包含该标头所需的标头。