為什么編譯器不讓我向前聲明typedef?假設(shè)這是不可能的,那么使我的包含樹變小的最佳實(shí)踐是什么?
3 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以轉(zhuǎn)發(fā)typedef。但是要做
typedef A B;
您必須先轉(zhuǎn)發(fā)聲明A:
class A;
typedef A B;

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
對于像我這樣的人,他們希望向前聲明使用typedef定義的C樣式結(jié)構(gòu),在某些C ++代碼中,我找到了一種解決方法,如下所示:
// a.h
typedef struct _bah {
int a;
int b;
} bah;
// b.h
struct _bah;
typedef _bah bah;
class foo {
foo(bah * b);
foo(bah b);
bah * mBah;
};
// b.cpp
#include "b.h"
#include "a.h"
foo::foo(bah * b) {
mBah = b;
}
foo::foo(bah b) {
mBah = &b;
}
- 3 回答
- 0 關(guān)注
- 631 瀏覽
添加回答
舉報(bào)
0/150
提交
取消