你好 我有類AA.h,我已經定義的結構內:在C++中,如何讓類在不包含頭的情況下識別結構?
#include "BB.h"
Struct foo{
};
Class AA
{
…
void funa()
{
BB bb;
foo f;
bb.func(f);
}
….
};
我的問題是我必須還包括AA.h在BB.h文件,以便它將識別FOO結構或者有什麼我可以做的嗎?
你好 我有類AA.h,我已經定義的結構內:在C++中,如何讓類在不包含頭的情況下識別結構?
#include "BB.h"
Struct foo{
};
Class AA
{
…
void funa()
{
BB bb;
foo f;
bb.func(f);
}
….
};
我的問題是我必須還包括AA.h在BB.h文件,以便它將識別FOO結構或者有什麼我可以做的嗎?
看起來最簡單的是爲你的結構創建一個頭,然後將它包含在你的AA和BB中。
#ifndef __FOO__H__
#define __FOO__H__
struct foo {
};
#endif
我想你想在BB.h
中使用foo
。但是,您不能在BB.h
中包含AA.h
,因爲它會引入循環依賴項,編譯將失敗。解決此問題的最簡單方法是在單獨的源文件中提供A::funa
的實現(通常使用.cpp
擴展名)。你只需要在頭文件中聲明funa();
沒有任何實現。如果你這樣做,那麼就不需要在AA.h
中包含BB.h
(你需要在AA.cpp
中包含BB.h
),從而避免循環依賴。