无论如何在头文件中使用BOOST_PYTHON_MODULE?例如,我希望能够声明此模块

BOOST_PYTHON_MODULE(Status_Effect)
{
    boost::python::class_<StatusEffect>("StatusEffect")
        .def("GetPriority", &StatusEffect::GetPriority)
        .def("GetDescription", &StatusEffect::GetDescription)
        .def("GetName", &StatusEffect::GetName);
}


在头文件中。但是,无论何时尝试,它都会抱怨多个定义。有谁知道在头文件中进行包装的方法吗?

谢谢

最佳答案

这是一种解决方法:括号内的内容只是普通的C ++代码。因此,您可以将该部分移至内联函数中。

例如,您可以将其放入标题中:

inline void DeclareStatusEffect()
{
  boost::python::class_<StatusEffect>("StatusEffect")
    .def("GetPriority", &StatusEffect::GetPriority)
    .def("GetDescription", &StatusEffect::GetDescription)
    .def("GetName", &StatusEffect::GetName);

}


并将其放入您的源文件中:

BOOST_PYTHON_MODULE(Status_Effect)
{
  DeclareStatusEffect();
}


您还可以查看BOOST_PYTHON_MODULE宏的功能,也许有一种方法可以在标头中添加更多内容,但是即使以后使用Boost.Python,也可能不安全。

关于c++ - 无论如何在标题中使用boost python包装器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5348672/

10-09 00:19