无论如何在头文件中使用boost python包装器?

时间:2011-03-18 06:09:14

标签: c++ boost boost-python

无论如何在头文件中使用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);
}

在头文件中。每当我尝试时,它会抱怨多个定义。有没有人知道在头文件中进行包装的方法?

由于

1 个答案:

答案 0 :(得分:0)

这是一个解决方法:括号内的内容只是普通的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来说,这可能不安全,即使你得到了它起作用。