小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

頭文件交叉定義出現(xiàn)

 行走在理想邊緣 2016-08-21

 error C2143: syntax error : missing ';' before '*'
error C2501: 'CTest1Doc' : missing storage-class or type specifiers
error C2501: 'GetDocument' : missing storage-class or type specifiers
遇到這種莫名的錯(cuò)誤,最可氣了。
當(dāng)我在childFrm中加入 #include "CMyView.h"便報(bào)的錯(cuò)

解決方法1是:
是在自己要使用的View類的.cpp文件中加入下面一句聲明:
class CMyDoc;

解決方法2是:

是在自己要使用的View類的.cpp文件
#include   "XXXDoc.h"    
#include   "XXXView.h"   
#include   "MainFrm.h" 


具體的,可以拿三峽(周達(dá)超編的)應(yīng)用程序來(lái)說明~~

CPlatformGL這個(gè)類中,要用到CModuleGL這個(gè)類,

CModuleGL這個(gè)類,也要用到CPlatformGL這個(gè)類, 如果正常的在頭文件交叉包含的話,很容易出現(xiàn)上面描述的編譯問題,

解決方法1:

CPlatformGL這個(gè)類的頭文件中,加上#include "ModuleGL.h"

另外,還有在整個(gè)類的定義前,加上class CModuleGL;   //類聲明,避免交叉定義

(我看到周達(dá)超程序還在類定義前,加上了using namespace std;//命名空間,不知道和這個(gè)有沒有關(guān)系)

同樣的,

在CModuleGL這個(gè)類的頭文件中,加上#include "PlatFormGL.h",

在類的定義前,加上class CModuleGL;


三峽程序的第二個(gè)例子~~

在SXSystem這個(gè)類中,需要獲取視圖類CSXS_testView類的指針(即,要用到視圖類),

在視圖類中也要調(diào)用SXSystem類,如實(shí)就有下面的解決方法~~

解決方法2:

在SXSystem類的源文件(*.cpp文件,而不是*.h)中,包含了三個(gè)文件,如下:

#include "MainFrm.h"
#include "SXS_testDoc.h"
#include "SXS_testView.h"

而在視圖類中,只需在頭文件包含SXSystem類即可,即#include "SXSystem.h"


以上是兩種常規(guī)的解決方法,都很好用~~(用第一種較多)





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多