Как хранить участников класса, которые будут выставлены Boost.Python - PullRequest
1 голос
/ 07 марта 2019

Мне нужно сохранить список членов класса, который будет позже представлен 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);
}

К:

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);
    }
}

Мои единственные ограничения - его нужно хранить в контейнере (карта),При необходимости его можно сохранить в шаблонном классе под интерфейсом, но я бы хотел этого избежать (выступления)

...