Я хочу создать прототип функции в C ++, чтобы был аргумент void *
, который может принимать указатели любого типа. Я знаю, что это возможно в C. Это возможно в C ++?
[РЕДАКТИРОВАТЬ] Вот упрощенная версия кода, который я пытаюсь заставить работать:
#include <stdio.h>
void func(void (f)(const void *))
{
int i = 3;
(*f)(&i);
}
void func_i(const int *i)
{
printf("i=%p\n",i);
}
void func_f(const float *f)
{
printf("f=%p\n",f);
}
void bar()
{
func(func_i);
}
А вот вывод компилятора:
$ g++ -c -Wall x.cpp
x.cpp: In function ‘void bar()’:
x.cpp:21: error: invalid conversion from ‘void (*)(const int*)’ to ‘void (*)(const void*)’
x.cpp:21: error: initializing argument 1 of ‘void func(void (*)(const void*))’
$ %