Динамическое добавление членов в класс с помощью 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?

Ответы на вопрос(1)

Ваш ответ на вопрос