C++ 如何存储要向Boost.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",

我需要存储一个类成员的列表,以便稍后使用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", &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);
    }
}