我想從類A調用Foo()函數,通過另一個類的指針 (我不能包含其他類的頭文件,因爲我在另一個類中執行該函數,所以這將導致一個,,包含本身'錯誤)我該怎麼做?類互相調用函數(包括異常)
//a.h
class X; // here I can't include "x.h", so forward declaration, but that results incomplete type
class A
{
X* ptr;
void Example()
{
X->Foo(); // it can't be use, casue ,,incomplete type is not allowed''
}
void Print();
}
//x.h
#include "a.h"
class X
{
A* ptrarray[];
void Foo();
void List()
{
for (i...)
ptrarray[i]->Print(); // ok, works fine
}
}
我怎樣才能解決這個問題搞定了,你能給我什麼建議?
使用標頭警衛:http://en.wikipedia.org/wiki/Include_guard – TheDarkKnight 2013-05-10 11:00:44
我試過了,但沒有工作......或者請在這個例子中向我展示正確的用法。謝謝 – user2369698 2013-05-10 11:02:07
將你的文件分割成.h和.cpp文件,然後把這個實現放到cpp文件中。這樣,你只需要轉發聲明類而不在.h文件中包含頭文件。 – TheDarkKnight 2013-05-10 11:06:21