C++ では、何らかの型へのポインターを返し、引数を取らない関数を指す、ある種のジェネリック関数ポインターを作成することは可能ですか?
たとえば、次の両方を指すことができる 1 つのタイプのポインター:
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 にキャストする方法はありますか?
これは、両方のタイプの関数 (および引数を取らずに何らかのタイプへのポインターを返す他の関数) へのポインターを 1 つのベクトルにまとめて格納できるようにするためです。