在C ++中,是否有可能创建一种通用函数指针,它可以指向返回某种类型指针且不带参数的任何函数?
例如,一种类型的指针可以指向以下两个函数中的任何一个:
int* funcInt(){
int* i = new int;
*i = 5;
return i;
}
char* funcChar(){
char* c = new char;
*c = 'a';
return c;
}
显然,下面的代码是有效的:
int* (*funcPointerA)() = funcInt;
char* (*funcPointerB)() = funcChar;
但是,是否可能像下面这样做(目前会导致编译错误):
void* (*funcPointerC)() = funcInt;
void* (*funcPointerD)() = funcChar;
目前上述代码会产生以下错误:
error: invalid conversion from 'int* (*)()' to 'void* (*)()'
error: invalid conversion from 'char* (*)()' to 'void* (*)()'
有没有办法将funcPointerA和B转换为C和D?这样,指向两种类型的函数的指针(以及返回指向某些类型的指针且不带参数的其他函数)就可以存储在单个向量中。
void*
就可以,则@n.m.的类型擦除解决方案更简单、更清晰。 - Jonathan Wakely