我有这样的: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