связывание — Соедините таблицу Lua с классом C ++ без сторонней библиотеки / источника

ЭТО НЕ ДУБЛИКАТ, прочитайте полный текст!

Я не уверен, что название подходит, но я объясню здесь более подробно.

У меня есть класс C ++ с некоторыми функциями, переменными и свойствами (C ++ Builder). В Lua у меня есть упрощенная таблица, отражающая переменные и свойства.

Пример:

class foo {
private:
// Other private members and functions

public:
int x;
int y;
String caption;
};

Когда я создаю экземпляр класса foo, я создаю и помещаю соответствующую таблицу в глобальную среду lua. У меня будет глобальная таблица Lua со всеми экземплярами, но чтобы упростить пример, мы просто пока пропустим глобальную таблицу и сосредоточимся на одном экземпляре. Lua представление экземпляра foo:

foo = { x, y, caption }

Теперь «проблема» под рукой. В Lua таблица foo является только прокси для экземпляра класса C ++, поэтому, когда я делаю это в Lua …

foo.caption = "My caption"

…экземпляр класса C ++ для foo устанавливает заголовок переменной.
То же самое и наоборот (Луа) …

печать (foo.x)

…напечатает значение переменной экземпляра класса foo x.

Я гуглил весь день, и большинство примеров используют другие библиотеки и оболочки, не объясняя механизм, стоящий за ним.

Я понял, что мне нужно использовать мета-таблицы и lightuserdata, но означает ли это, что я должен определить getters / setters для каждой переменной и использовать foo.GetX и foo.SetCaption для доступа к ним? Это было бы много получателей / сеттеров.

Может кто то объяснять как сделать эту связь между C ++ / Lua без использования сторонних библиотек / источников?

РЕДАКТИРОВАТЬ:
Обновил заголовок и дал понять, что это не дубликат, как думает @Sombrero Chicken.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector