C++ 如何调用 lua 中定义的方法?

我有一个Hero.lua

local Hero = class(“Hero”,function()
return display.newNode()
end)

function CreateHero()
return Hero.new()
end

function Hero:ctor()
self.heroName = cc.String:create("")
self.heroName:retain()
end

function Hero:getHeroName()
return self.heroName
end

function Hero:setHeroName(var)
if self.heroName ~= nil then
self.heroName:release()
end

self.heroName = var
self.heroName:retain()

end

请问在c++中如何调用getHeroName这个方法呢?

CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
pEngine->executeString(“hero:getHeroName()”);

其中hero必须是全局的一个hero,或者你自己定义一个全局的hero的table,把需要的hero放在里头
pEngine->executeString(“g_heros:getHeroName()”);

我的hero 是通过 CreateHero 创建出来的,也就是一个userdata,并不是一个table,请问怎么办?
我通过luaL_ref保存了hero,但是似乎没有办法访问到getHeroName

需求比较奇特,非要这么干不是不可以,但你的功能逻辑上恐怕有问题。
如果对Lua的c api比较熟练的话,这里应该不是问题。你已经拿到了hero这个userdata,通过查表可以取得到getHeroName这个function,再将参数压栈,执行这个function就可以了。