То, что я пытаюсь сделать, по существу, может вызвать функцию и зарегистрировать функцию C++ с помощью lua. В основном что-то вроде registerFunction (function). Теперь я знаю, что есть библиотеки, которые делают это за вас, однако я хочу узнать, как кто-то будет писать такую библиотеку.:: func не была объявлена ошибка
Мой текущий метод заключается в использовании шаблонов для создания соответствующей функции клея для передаваемой ему функции.
Мой код прямо сейчас выглядит следующим образом:
template<typename F>
struct registerStruct
{
template<typename T>
struct inner
{
static int func(lua_State*);
};
};
template<typename F>
void registerFunction(const char *name,F function)
{
lua_register(this->L,name,®isterStruct<decltype(function)>::inner<function>::func);
}
template<typename F>
struct registerStruct<F(void)> //I would write more classes for different numbers of arguments
{
template<F(*T)(void)>
struct inner
{
static int func(lua_State *L)
{
returnLua(L,T()); //push the return value onto lua's stack
return 1;
}
};
};
Тогда я пытаюсь использовать его как это:
int test(void)
{
std::cout<<"hello from c++"<<std::endl;
return 0;
}
registerFunction("test",test);
Компиляция с GCC дает ошибку :: FUNC не была объявлена.
Почему вы используете 'this->' в функции, не являющихся членами? – 0x499602D2