我有一个c++类型Foo
,它包含一个std::function<void()> funcs
,它已经成功地绑定到python。我的目标是用python定义函数并将它们添加到这个类型中,然后返回一个实例。在c++中,我使用pybind来获取这种类型的一个实例。但是,当我试图调用其中一个函数时,我的程序seg出现故障。在
class Foo
{
void addFunc(std::function<void()> _func)
{
funcs.push_back(_func);
}
void call(int _index)
{
funcs[_index]();
}
private:
std::vector<std::function<void()>> funcs;
}
namespace py = pybind11;
PYBIND11_MODULE(foo, m)
{
py::class_<Foo>(m, "foo")
.def(py::init<int, int>())
.def("addFunc", &Foo::addFunc)
.def("call", &Foo::call);
}
稍后在c++中
^{pr2}$我的python模块有:
def newFunc():
print "working!"
def create_foo():
temp = foo.Foo(0, 100)
temp.addFunc(newFunc)
return temp
我不知道为什么函数不能正确地转换回c++中?在
我不得不将
py::scoped_interpreter python;
移到一个更高的作用域,因为调用函数时它不在作用域内相关问题 更多 >
编程相关推荐