Agrega miembros dinámicamente a una clase usando Lua + SWIG

Este código Lua, crea una tabla y agrega dinámicamente un nuevo miembro. Ejecutando esto puedo conseguir"hello" en la pantalla como se esperaba:

foo = {}
foo.x = "hello"
print(foo.x)

Pero ahora estoy usando SWIG para enlazar algunas clases de C ++ a Lua. Para ello, en untest.i (Archivo de módulo SWIG) Creé una clase simple como esta:

%module test

%inline
%{

class Foo
{
public:
  Foo() { X = 0; }
  void SetX(int x) { X = x; }
  int GetX() { return X; }
private:
  int X;
};

%}

Luego escribí un código de prueba de Lua así:

obj = test.Foo()
obj:SetX(5)
print("Number: " .. obj:GetX())

Corriendo y consiguiendo"Number 5" como se esperaba. El problema es que cuando agrego dinámicamente un nuevo miembro a mi objeto con enlace SWIG, y trato de acceder a él, así:

obj.Y = 7
print("Number: " .. obj.Y)

Me sale este mensaje de error:

"attempt to concatenate field 'Y' (a nil value)"

¿Es posible agregar dinámicamente nuevos miembros en objetos enlazados usando SWIG? ¿Hay alguna opción sin tener que pasar a otra biblioteca de enlace de Lua?

Respuestas a la pregunta(1)

Su respuesta a la pregunta