У меня проблема. Я пытаюсь преобразовать void * в std :: function. Это лишь простой пример, любые предложения будут оцененылитье void * to std :: function
#.h file
class Example {
public:
Example();
int foo(void* hi);
int fooFunc(std::function<int(int, int)> const& arg, int x, int y) {
foo(arg.target<void*>(), x, y);
return 2;
}
};
#.cpp file
Example::Example() {
}
int Example::foo(void * func, int x, int y)
{
//cast back to std::function
func(x, y);
std::cout << "running in foo: " << a << "\n";
return a;
}
Каждый кастинг я пытался не работал.
Я знаю, что могу отправить std::function
в этом примере, но это для чего-то большего, и я работаю над примером, чтобы заставить его работать здесь.
Весь смысл void*
, предназначен для использования в некоторых ситуациях, когда вы не знаете, что получите, а затем примените его к конкретному использованию, которое вам нужно.
Спасибо!
Зачем вы это делаете? Что такое 'void * ', исходящий из (некоторые' dlsym'?). Обратите внимание, что замыкания больше одного указателя. –
Некоторые dsystem lib. Если бы мне не пришлось. Я бы не сделал этого – Mumfordwiz
Невозможно сохранить 'void *' в 'std :: function', потому что он не может быть вызван. Ваш вызов 'target' всегда будет возвращать нулевой указатель. –