在寫乙個大的程式時,常常要定義很多類,每個類有各自的用途。乙個類很可能會包含另乙個類定義的成員變數。假如有乙個類a,乙個類b。類a有乙個成員變數b* b。類b有乙個成員變數a* a。這時我們在定義類a和類b時會分別在開頭時包含引用到的.h檔案。這樣會導致編譯出錯。
具體例子如下:
mutou.h檔案**如下:
#ifndef _mutou_h_
#define _mutou_h_
#include"mutoufsm.h"
#include"state.h"
#include"cocos2d.h"
using_ns_cc;
class mutou :public node
;#endif
mutoufsm.h檔案**如下:
#ifndef _mutoufsm_h_
#define _mutoufsm_h_
#include"mutou.h"
#include"state.h"
#include"cocos2d.h"
using_ns_cc;
class mutoufsm :public node
;#endif
類mutou需要呼叫類mutoufsm,類mutoufsm需要呼叫類mutou,我們理所當然會想到包含.h標頭檔案。這樣編譯會出錯:
錯誤3error c2143: 語法錯誤 : 缺少「;」(在「*」的前面) (..\classes\mutoufsm.cpp)f:\ccs\fsm\classes\mutou.h251fsm
錯誤6error c2143: 語法錯誤 : 缺少「;」(在「*」的前面) (..\classes\mutoufsm.cpp)f:\ccs\fsm\classes\mutou.h281fsm
出現上述的錯誤並不是由於我們程式設計時頭腦發昏少加了「;」,而是兩個.h檔案互相呼叫,導致無線迴圈呼叫。
解決的辦法是,在報錯的那個.h檔案的類定義前加上class宣告呼叫的類(即class 類)。解決上面的錯誤是在mutou.h的檔案中,在class mutou定義前宣告class mutoufsm。
c 迴圈引用
雖然c 11引入了智慧型指標的,但是開發人員在與記憶體的鬥爭問題上並沒有解放,如果我門實用不當仍然有記憶體洩漏問題,其中智慧型指標的迴圈引用缺陷是最大的問題。main.cpp test created by 杜國超 on 17 9 9.include include include using na...
期刊間的互相引用
2013年6月,在最新期刊影響因子排名發布的時候,66種出版物由於過多地引用他們自己 self citation 或者特定的一些期刊的文章 citation stacking 而被除名,被特地提名的有international journal of crashworthiness 跟the iran...
迴圈引用導致記憶體洩露 dealloc無法呼叫
在專案中,無意中把newswritecommentviewdelgate的屬性設定為了retain,導致迴圈引用,其他使用這個delegate的類引用計數出問題,然後在正常的使用alloc建立這個類物件和release釋放物件後無法呼叫類的dealloc函式,記憶體洩露是必然的。然後,在push進n...