type(m_pState, pVoid, pParam->GetType());这句话,你可能有些看不懂,没关系,我会在下一讲详细的解释Lua++的一些API的用法。
现在大概和你说 一下,这句话的意思就是,把一个C++对象传输给Lua函数。 再看看,下面一个。
bool CLuaFn:: PopLuaData(lua_State* pState, _ParamData* pParam, int nIndex)
{
if(pParam == NULL)
{
return false;
}
if(pParam->CompareType(“string”))
{
if (lua_isstring(m_pState, nIndex) == 1)
{
const char* pData = (const char*)lua_tostring(m_pState, nIndex);
pParam->SetData((void* )pData, (int)strlen(pData));
}
return true;
}
if(pParam->CompareType(“int”))
{
if (lua_isnumber(m_pState, nIndex) == 1)
{
int nData = (int)lua_tonumber(m_pState, nIndex);
pParam->SetData(&nData, sizeof(int));
}
return true;
}
else
{
pParam->SetData(tolua_tousertype(m_pState, nIndex, NULL), -1);
return true;
}
}
弹出一个参数并赋值。pParam->SetData(tolua_tousertype(m_pState, nIndex, NULL), -1);这句话同样,我在下一讲中详细介绍。
好了,我们又进了一步,我们可以用这个函数绑定任意一个Lua函数格式。而代码不用多写,懒蛋的目的达到了。
这一讲主要是介绍了一些基本知识,或许有点多余,但是我觉得是必要的,在下一讲中,我讲开始详细介绍如何绑定一个C++对象给Lua,并让Lua对其修改。然后返回结果。