[英]error C2146: syntax error : missing ';' before identifier 'm_ball' 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"
球
#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;
};
播客
#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個原因,在這種情況下,imo不起作用。 我正在從名為《 Microsoft Visual C ++ Windows Applications by Example》的魔術書中學習MFC,並且所有內容都包括轉到cpp文件的內容(即使我覺得它很奇怪,並且本書遠非最好的向導也支持這種樣式...)
好的,我將#include"Ball.h"/"Pod.h"
放在BallMasterDoc.h中 ,它解決了這個問題,但這不能滿足答案,只要魔術書曾經提供過有效的代碼即可(當然,這不是確切的程序,對我來說,大部分該代碼仍然無法正常工作),但現在已經沒有關系了
由於BallMasterDoc.h
依賴於對Ball
和Pod
類的了解,因此該頭文件應包含Ball.h
和Pod.h
,而不是依賴於BallMasterDoc.h包括的任何.cpp
也包括那些其他頭文件。
您發布的BallMasterDoc.cpp
看起來BallMasterDoc.cpp
,因此您的錯誤可能來自另一個.cpp
文件,該文件確實包含BallMasterDoc.h
但沒有包含該標頭所需的標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.