По сути, я просто хочу иметь чистый экземпляр Lua, созданный внутри моего класса Manager, а затем экспортировать функции в классе в Lua, чтобы я мог вызывать функции в уже созданном классе C++ внутри Lua.
Это текущий способ, которым я смотрю на решение проблемы. Он компилируется, но в Lua ничего не происходит.
Кто-нибудь знает, что я делаю неправильно, или у кого-нибудь есть другие предложения?
Manager.lua
newObject("Object", 1234)
printAll()
Менеджер.h
#ifndef MANAGER_H
#define MANAGER_H
#include <iostream>
#include <vector>
#include <string>
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "luabind/luabind.hpp"
#include "Object.h"
class Manager
{
private :
lua_State *L;
std::vector<Object> obj;
public :
Manager();
void newObject(std::string t, int nm);
void printAll();
};
#endif
Manager.cpp
#include "Manager.h"
Manager::Manager()
{
luabind::open(L);
luabind::module(L) [
luabind::class_<Manager>("Manager")
.def(luabind::constructor<>())
.def("newObject", &Manager::newObject)
];
luaL_dofile(L, "Manager.lua");
}
void Manager::newObject(std::string t, int nm)
{
if(t == "Object")
{
Object object(nm);
obj.push_back(object);
}
}
void Manager::printAll()
{
for(unsigned int i = 0; i < obj.size(); i++)
std::cout << obj[i].getNum() << std::endl;
}