Boost.Python function pointers as class constructor argument

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 ++ - скорость. Так что было бы неплохо, если бы я сохранил это преимущество (указатель функции присваивается переменной-члену во время инициализации и впоследствии будет вызываться более миллиона раз).

1
задан Ponkadoodle 4 September 2010 в 07:39
поделиться