Я работал над тем, как связать классы C ++ с Lua для использования в игровом движке, и столкнулся с интересной проблемой.Я следовал учебному пособию на этом сайте: http://tinyurl.com/d8wdmea. После учебного курса я понял, что следующий код, который он предложил:
local badguy = Monster.create();
badguy.pounce = function(self, howhigh, bonus)
self.jumpbonus = bonus or 2;
self:jump(howhigh);
self:rawr();
end
badguy:pounce(5, 1);
добавит функцию pounce только к этому конкретному экземпляруМонстр.Поэтому я изменил предложенный им сценарий следующим образом:
function Monster:pounce(howhigh, bonus)
print("in pounce function");
print(bonus);
self.jumpbonus = bonus or 2
self:jump(howhigh);
self:rawr();
end
local badguy = Monster.create();
badguy:pounce(5,1);
Однако, когда я вызываю функцию pounce, сценарий прерывается.После дальнейшего тестирования единственный способ успешно вызвать функцию pounce - это вызвать функцию как статический член класса Monster (код функции остается прежним):
Monster.pounce(badguy,5,1);
Синтаксически, badguy: pounce (5,1) корректен, но неправильно вызывает функцию.Я просто делаю что-то не так, или это ограничение связывания между lua и c ++ / как я связываю два языка?