是否可以在头文件中使用 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
宏的作用,也许有一种方法可以将更多内容放入 header 中,但是对于 future 版本的 Boost.Python,这样做可能不安全,即使如果你让它工作。
关于c++ - 无论如何在标题中使用 boost python 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5348672/