Динамическое добавление членов в класс с помощью Lua + SWIG
Этот код Lua создает таблицу и динамически добавляет новый элемент. Запустив это я могу получить"hello"
на экране, как и ожидалось:
foo = {}
foo.x = "hello"
print(foo.x)
Но теперь яЯ использую SWIG для привязки некоторых классов C ++ к Lua. Для этой цели вtest.i
(Файл модуля SWIG) Я создал простой класс, подобный этому:
%module test
%inline
%{
class Foo
{
public:
Foo() { X = 0; }
void SetX(int x) { X = x; }
int GetX() { return X; }
private:
int X;
};
%}
Затем я написал тестовый код Lua следующим образом:
obj = test.Foo()
obj:SetX(5)
print("Number: " .. obj:GetX())
Бег и получение"Number 5"
как и ожидалось. Проблема заключается в том, что когда я динамически добавляю новый член к своему объекту, привязанному к SWIG, и пытаюсь получить к нему доступ, вот так:
obj.Y = 7
print("Number: " .. obj.Y)
Я получаю это сообщение об ошибке:
"attempt to concatenate field 'Y' (a nil value)"
Можно ли динамически добавлять новые элементы в объекты, связанные с помощью SWIG? Есть ли какая-то опция без необходимости переходить в другую библиотеку привязок Lua?