ЭТО НЕ ДУБЛИКАТ, прочитайте полный текст!
Я не уверен, что название подходит, но я объясню здесь более подробно.
У меня есть класс 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.
Задача ещё не решена.
Других решений пока нет …