2012-02-26 8 views
5

Sto cercando di esportare i campi statici dalla classe:luabind e campi statici

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

Che cosa ho mancato in su?

risposta

3

As clearly stated in the documentation, le funzioni statiche (tra le altre cose) non possono essere aggiunte come membri. Devono essere esaminati in un costrutto speciale .scope.

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

non so se la versione funzione non-membro del def ha readonly versioni per le variabili, ma si può. In caso contrario, dovrai esporlo come funzione che restituisce il valore.

+0

Ok, grazie. Ho perso il fatto che questo non è solo per le funzioni statiche. – Ockonal