Как я могу получить доступ к функции класса C ++ из сценария lua? - PullRequest
1 голос
/ 24 апреля 2011

Я думаю, что проблема, которую я хочу решить, будет простой для большинства из вас :) Предположим, у меня есть класс Node, который имеет функцию-член setPosition(float x, float y, float z).Я хотел бы иметь возможность определить переменную класса Node в lua и затем иметь возможность использовать setPosition() функцию также из Lua.Я знаю, что есть проблемы, связанные с тем, что Lua скорее относится к C, а не к C ++, и имеет проблемы с классами C ++, но я также знаю, что это достижимо.

1 Ответ

1 голос
/ 24 апреля 2011

Я бы использовал Луабинд для этого.С его помощью вы можете легко связать классы C ++, чтобы они могли быть созданы, доступны и изменены в Lua.Код, который вы напишите на C ++, может выглядеть примерно так:

module(L) [
    class_<Node>
        .def(constructor<>)
        .def("setPosition", &Node::setPosition)
];

Тогда вы сможете сказать это на Lua:

node = Node()
node:setPosition(x, y, z)

Вы также можете сделать привязки такчто Lua выглядит немного более естественно и может поддерживать такие вещи:

node1 = Node(x, y, z)
node2 = Node()
node2.position = { x, y, z }
...