C++ 如何存储要向Boost.Python公开的类成员
我需要存储一个类成员的列表,以便稍后使用Python 我想从:C++ 如何存储要向Boost.Python公开的类成员,c++,boost,boost-python,C++,Boost,Boost Python,我需要存储一个类成员的列表,以便稍后使用Python 我想从: struct Toto { int one; double two; }; BOOST_PYTHON_MODULE(PythonExport) { using namespace boost::python; class_<Toto>("Toto") .def_read("one", &Toto::one) .def_read("groot",
struct Toto {
int one;
double two;
};
BOOST_PYTHON_MODULE(PythonExport)
{
using namespace boost::python;
class_<Toto>("Toto")
.def_read("one", &Toto::one)
.def_read("groot", &Toto::two);
}
struct Toto{
int-one;
双二;
};
BOOST_PYTHON_模块(PythonExport)
{
使用名称空间boost::python;
类(“Toto”)
.def_读取(“一”和Toto::一)
.def_read(“groot”和Toto::two);
}
致:
BOOST_PYTHON_模块(PythonExport)
{
使用名称空间boost::python;
地图字段列表;
fieldList.push_back(“一”和Toto::一);
fieldList.push_back(“两个”和Toto::两个);
注册字段(类别“Toto”),字段列表;
}
模板
无效注册表字段(类aClass,std::map字段列表){
用于(字段:字段列表){
aClass.def_read(fieldList.first,fieldList.second);
}
}
我唯一的限制是它必须可以存储在容器(map)中。如果需要,它可以存储在接口下的模板类中,但我想避免(性能)我想通过
def_read
你的意思是def_readonly
(因为我在文档/代码中没有看到前者)你还打算用这个集装箱做什么?它需要一张地图吗这将解决什么问题(我有一个想法,但想看看是否值得付出努力并增加复杂性)您担心什么性能问题?是def_readonly
抱歉。不,它不需要是地图。已经使用内部宏描述了某些对象的序列化。我想升级这些宏以将其用于python绑定,这就是为什么我想将字段列表存储在一个容器中,以便以后能够使用它们。谢谢你我想你说的def_read
是指def_readonly
(因为我在文档/代码中没有看到前者)你还打算用这个集装箱做什么?它需要一张地图吗这将解决什么问题(我有一个想法,但想看看是否值得付出努力并增加复杂性)您担心什么性能问题?是def_readonly
抱歉。不,它不需要是地图。已经使用内部宏描述了某些对象的序列化。我想升级这些宏以将其用于python绑定,这就是为什么我想将字段列表存储在一个容器中,以便以后能够使用它们。非常感谢。
BOOST_PYTHON_MODULE(PythonExport)
{
using namespace boost::python;
std::map<std::string, ???> fieldList;
fieldList.push_back("one", &Toto::one);
fieldList.push_back("two", &Toto::two);
RegisterFields(class_<Toto>("Toto"), fieldList);
}
template <class T>
void RegisterFields(class_<T> aClass, std::map<std::string, ...> fieldList) {
for(fields : fieldList) {
aClass.def_read(fieldList.first, fieldList.second);
}
}