2012-02-26 33 views
5

Tôi đang cố gắng để xuất khẩu lĩnh vực tĩnh từ lớp:luabind và các lĩnh vực tĩnh

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

có tôi bị mất gì lên?

Trả lời

3

As clearly stated in the documentation, các chức năng tĩnh (trong số những thứ khác) không thể được thêm làm thành viên. Chúng phải được đặt trong một cấu trúc đặc biệt .scope.

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

Tôi không biết nếu chức năng phiên bản không phải thành viên của defreadonly phiên bản dành cho các biến, nhưng nó có thể. Nếu không, bạn sẽ phải hiển thị nó dưới dạng hàm trả về giá trị.

+0

OK, cảm ơn. Tôi đã bỏ lỡ điều này không chỉ cho các chức năng tĩnh. – Ockonal

Các vấn đề liên quan