луабинд и статические поля - PullRequest
5 голосов
/ 26 февраля 2012

Я пытаюсь экспортировать статические поля из класса:

class Foo
{
   const static int Var;
};

// luabind module:
.def_readonly("Var", &Foo::Var);
// I've also tried
.def_readonly("Var", Foo::Var);
 error: no matching function for call to ‘luabind::class_<Foo>::def_readonly(const char [6], const Foo&)’
 note: template<class C, class D> luabind::class_& luabind::class_::def_readwrite(const char*, D C::*)

Что я пропустил?

1 Ответ

3 голосов
/ 26 февраля 2012

Как четко указано в документации , статические функции (помимо прочего) не могут быть добавлены в качестве членов. Они должны быть ограничены в специальной .scope конструкции.

class_<foo>("foo")
    .def(constructor<>())
    .scope
    [
        class_<inner>("nested"),
        def("f", &f)
    ];

Я не знаю, имеет ли версия функции def, не являющаяся членом функции, readonly версии для переменных, но это возможно. Если этого не произойдет, вам придется представить его как функцию, которая возвращает значение.

...