我有這樣的:C++的非類向前聲明的typedef
//forward declaration of Foo <-- this is my question
void doSome(Foo foo);
typedef void* Foo; //Foo is defined later as void*
void doSome(Foo foo)
{
//code here..
}
我怎樣才能向前用void兼容的方式宣告富*?
這是一個簡化的示例,當然是微不足道這裏,但這個想法是具有多個實施方式中,像這樣:
//forward declaration of Foo <-- this is my question
void doSome(Foo foo);
//[implementation1_internal.h]
typedef void* Foo; //Foo is defined later as void*
void doSome(Foo foo)
{
//code here..
}
//[implementation2_internal.h]
typedef int* Foo; //Foo is defined later as int*
void doSome(Foo foo)
{
//code here..
}
,並選擇使用預處理器指令其中之一。 (這是無關緊要的,只是爲了展示這個例子不僅僅是愚蠢的)。
爲什麼不能事先使用typedef? – rtpg 2012-01-06 13:13:37
它是平凡的可能(或向前移動聲明,同樣的事情)。無論如何,在定義「Foo」之前,您實際上無法調用「doSome(Foo)」。 – MSalters 2012-01-06 13:18:30
這只是一個例子。我將爲Foo和doSome在多個頭文件中提供多個聲明 – Hugo 2012-01-06 13:19:11