Привязки Swig для Python/lua не инициализируют данные членов должным образом [закрыто]
-
06-09-2019 - |
Вопрос
Я пытаюсь создать набор привязок Lua для коллекции классов C++, но экспериментирую с Python, чтобы посмотреть, получу ли я лучшие результаты.На любом языке привязки, похоже, работают, однако, когда я инициализирую экземпляр класса, который содержит члены других классов, инициализация этих членов данных не гарантируется.
Например, возьмем класс:
class MyClass : public ParentClass // (Obviously) not a real class
{
public:
SomeClass sc;
OtherClass oc;
};//Note that none of my classes have a constructor or destructor; this is by design.
Когда я генерирую привязки для такого класса, я могу выполнять такие операторы, как:
var = module_name.MyClass()
print(var.sc.x, var.sc.y)
И я получаю ожидаемые ненужные значения, выводимые на экран.Однако, если я попытаюсь напечатать что-нибудь об экземпляре OtherClass, станет очевидно, что он «заглушен» — в Lua у него вообще нет метатаблицы, а в Python выполнение dir(var.oc) дает только функции по умолчанию.Однако, если я затем сделаю:
var.oc = module_name.OtherClass()
Вызов oc метатаблицы / dir(oc) — это то, на что я надеялся, и к нему можно относиться так, как и ожидалось.
Может ли кто-нибудь предложить какое-либо представление о том, почему инициализируются только некоторые данные-члены?
Спасибо!
Решение
Оказывается, эта проблема была связана с другой проблемой, с которой я столкнулся.Видеть эта тема для резолюции.