看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual Studio 2008 問題(Question): 範例如下面程式碼,(因原文過大,故僅留下加入後出問題的地方) 編譯的想法是Class A因為內容過多,且希望有些功能可重複利用 因此想將Class A某個複雜的函式另外寫一個Class B做處理 (Class B的INSIDE函式是將Class A內的影像做RGB與YUV間的轉換) 但卻出現以下的錯誤結果 故想請問是否有高手知道我犯了甚麼錯誤 感謝~!!! (因初學有些語法的部分可能還不太清楚,請多見諒QQIII) 錯誤結果(Wrong Output): error C2653: 'B' : 不是類別或命名空間名稱 error C3861: 'INSIDE': 找不到識別項 程式碼(Code): -------------------------------------------- //A.h #include “B.h” class A { public: void OUTSIDE(void); }; void A :: OUTSIDE(void) { B :: INSIDE(*this); //錯誤出現在這行 } -------------------------------------------- -------------------------------------------- //B.h #include “A.h” class B { public: static void INSIDE(A& a); }; void B :: INSIDE(A& a) { …………………………… } -------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.205.229 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450177582.A.401.html
overhead: 我猜兩個class相互include可能會有問題 你A includeB時 12/15 23:03
overhead: 別放在A.h 放在A.cpp 12/15 23:04
overhead: 不過這種A B互相include不是好寫法 盡量不要整個A this 12/15 23:05
overhead: 丟進B 應該是A裡的member分去B處理 12/15 23:07
QQIII: 感謝過頭! 我改用您建議的傳入成員作法,已可正常使用 12/16 11:30
QQIII: 同樣感謝您指教我較良好的coding習慣!!! 12/16 11:31