2012-02-26 6 views
5

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

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::*) 

Что я пропустил вверх?

ответ

3

As clearly stated in the documentation, статические функции (между прочим) не могут быть добавлены в качестве членов. Они должны быть заключены в специальную конструкцию .scope.

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

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

+0

Хорошо, спасибо. Я пропустил, что это не только для статических функций. – Ockonal

Смежные вопросы