【发布时间】:2013-05-12 15:09:05
【问题描述】:
在 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?
这样可以将指向这两种函数类型的指针(以及其他返回指向某种类型的指针但不带参数的函数)的指针一起存储在一个向量中。
【问题讨论】:
标签: c++ function generics pointers