gpt4 book ai didi

c++ - 将另一个类的 C++ 静态函数绑定(bind)到 Lua

转载 作者:行者123 更新时间:2023-11-30 05:36:29 25 4
gpt4 key购买 nike

嗨!

我的问题很简单:我在 extendedgamefunctions 类中有一个函数:

在标题中:

#include "Gameitems.h" 
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};

extern std::vector<std::vector<Gameitems>> items;

class A
{
A();
~A();

public:
static void messagewindow(lua_State*);
};

代码是:

  Functions extfunctions;
A::A()
{}
A::~A()
{}

void A::messagewindow(lua_State *L)
{
string message =lua_tostring(L,0);
extfunctions.Messagewindow(message);
}

我想绑定(bind)另一个名为 Gamefunctions 的函数:

#include "Externedgamefunctions.h"

A egfunctions;
lua_State* L;
void Gamefunctions::luainit()
{
L = luaL_newstate();

/* load Lua base libraries */
luaL_openlibs(L);
lua_pushcfunction(L,&A::messagewindow);
lua_setglobal(L, "messagewindow");
}

相反,来自另一个类的函数是静态的,我得到这个错误:

Error   5   error C2664: 'lua_pushcclosure' : cannot convert parameter 2 from 'void (__cdecl *)(lua_State *)' to 'lua_CFunction'    C:\Users\Bady\Desktop\MY Game\basicconfig\BlueButterfly\BlueButterfly\Gamefunctions.cpp 170

我不想在游戏函数中添加一个附加函数来获取消息窗口(除非我没有其他方法),因为我直接编写了扩展游戏函数而不是制作一个无穷无尽的字符串怪物。

编辑:差点忘了:Lua 5.2 和 c++11

最佳答案

lua_CFunction定义为typedef int (*lua_CFunction) (lua_State *L);,所以你需要改变void A::messagewindow(lua_State * L)int A::messagewindow(lua_State *L)

关于c++ - 将另一个类的 C++ 静态函数绑定(bind)到 Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33553502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com