2012-02-26 14 views
5

Estoy tratando de exportar los campos estáticos de la clase:luabind y campos estáticos

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

¿Qué he perdido hasta?

Respuesta

3

As clearly stated in the documentation, las funciones estáticas (entre otras cosas) no se pueden agregar como miembros. Deben tener un alcance especial en una construcción especial .scope.

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

No sé si la versión de función que no sea miembro de def tiene readonly versiones para las variables, pero puede. Si no lo hace, tendrá que exponerlo como una función que devuelve el valor.

+0

Bien, gracias. Me perdí que esto no es solo para funciones estáticas. – Ockonal

Cuestiones relacionadas