I have a C++ class that requires a function pointer in it's constructor (float(*myfunction)(vector
)
I've already exposed some function pointers to Python.
Идеальный способ использования этого класса выглядит примерно так:
import mymodule
mymodule.some_class(mymodule.some_function)
Итак, я говорю Boost об этом классе так:
class_<SomeClass>("some_class", init<float(*)(vector<float>*)>);
Но я получаю:
error: no matching function for call to 'register_shared_ptr1(Sample (*)(std::vector<double, std::allocator<double> >*))'
, когда пытаюсь его скомпилировать.
Итак, есть ли у кого-нибудь какие-нибудь идеи о том, как исправить ошибку, не теряя гибкости, полученной от указателей функций (т.е. без возврата к строкам, указывающим, какую функцию вызывать)?
Кроме того, основной смысл написания этого кода на C ++ - скорость. Так что было бы неплохо, если бы я сохранил это преимущество (указатель функции присваивается переменной-члену во время инициализации и впоследствии будет вызываться более миллиона раз).