簡體   English   中英

錯誤C2146:語法錯誤:缺少';' 在標識符'm_ball'C ++之前

[英]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依賴於對BallPod類的了解,因此該頭文件應包含Ball.hPod.h ,而不是依賴於BallMasterDoc.h包括的任何.cpp也包括那些其他頭文件。

您發布的BallMasterDoc.cpp看起來BallMasterDoc.cpp ,因此您的錯誤可能來自另一個.cpp文件,該文件確實包含BallMasterDoc.h但沒有包含該標頭所需的標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM