作者QQIII ()
看板C_and_CPP
標題[問題] 不是類別或命名空間名稱 & 找不到識別項
時間Tue Dec 15 19:06:19 2015
開發平台(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