2012-02-26 36 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 2012-02-26 08:48:40