Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Lua带有Luabind编译错误c++;_C++_Class_Lua_Luabind - Fatal编程技术网

C++ Lua带有Luabind编译错误c++;

C++ Lua带有Luabind编译错误c++;,c++,class,lua,luabind,C++,Class,Lua,Luabind,我不能让它工作 这是我的代码,我尽可能简单: #include <iostream> #include <lua/lua.hpp> #include <luabind/luabind.hpp> #include <luabind/class.hpp> class MyClass { public: MyClass() {} ~MyClass() {} void myFunc() { std::co

我不能让它工作

这是我的代码,我尽可能简单:

#include <iostream>
#include <lua/lua.hpp>
#include <luabind/luabind.hpp>
#include <luabind/class.hpp>

class           MyClass
{
public:
  MyClass() {}
  ~MyClass() {}
  void          myFunc() { std::cout << "Hi !" << std::endl; }
  int           getMyVar2() { return (this->myVar2); }
  int           myVar;
private:
  int           myVar2;
};

int             main()
{
  MyClass       *m = new MyClass();
  lua_State     *L = luaL_newstate();

  luabind::open(L);
  luabind::module(L)
    [
     luabind::class_<MyClass>("MyClass")
     .def("myFunc", &MyClass::myFunc)
     .def("getMyVar2", &MyClass::getMyVar2)
     .def("myVar", &MyClass::myVar)
     ];
  luabind::globals(L)["globalName"] = m;

  if (luaL_dofile(L, "example.lua"))
    fprintf(stderr, "%s\n", lua_tostring(L, -1));
  lua_close(L);
}

有人能帮我吗?我确信这是一个初学者的错误。

您不能用.def声明属性,因为它只用于函数。 根据您希望访问类成员的方式,您可以使用不同的方法:

luabind::module(L)
        [
            luabind::class_<MyClass>("MyClass")
            .def("myFunc", &MyClass::myFunc)
            .def("getMyVar2", &MyClass::getMyVar2) // function with MyClass:getMyVar2()
            .property("myVar2", &MyClass::getMyVar2) // MyClass.myVar2 is only readable, same as MyClass:getMyVar2()
            .property("myVar", &MyClass::myVar) // MyClass.myVar is only readable
            // vs
            .def_readwrite("myVarT", &MyClass::myVar) // MyClass.myVarT is read and writable
        ];
    luabind::globals(L)["globalName"] = m;
luabind::模块(L)
[
luabind::类uux(“MyClass”)
.def(“myFunc”,&MyClass::myFunc)
.def(“getMyVar2”,&MyClass::getMyVar2)//带有MyClass:getMyVar2()的函数
.property(“myVar2”,&MyClass::getMyVar2)//MyClass.myVar2仅可读,与MyClass:getMyVar2()相同
.property(“myVar”,&MyClass::myVar)//MyClass.myVar仅可读
//vs
.def_readwrite(“myVarT”,&MyClass::myVar)//MyClass.myVarT是可读写的
];
luabind::globals(L)[“globalName”]=m;

查看doku以获得详细解释:

嗨,谢谢!我使用.def作为变量,这给了我一个编译错误。我不知道,财产。再次感谢!
}
luabind::module(L)
        [
            luabind::class_<MyClass>("MyClass")
            .def("myFunc", &MyClass::myFunc)
            .def("getMyVar2", &MyClass::getMyVar2) // function with MyClass:getMyVar2()
            .property("myVar2", &MyClass::getMyVar2) // MyClass.myVar2 is only readable, same as MyClass:getMyVar2()
            .property("myVar", &MyClass::myVar) // MyClass.myVar is only readable
            // vs
            .def_readwrite("myVarT", &MyClass::myVar) // MyClass.myVarT is read and writable
        ];
    luabind::globals(L)["globalName"] = m;