Привязки Swig для Python/lua не инициализируют данные членов должным образом [закрыто]

StackOverflow https://stackoverflow.com/questions/916555

Вопрос

Я пытаюсь создать набор привязок 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) — это то, на что я надеялся, и к нему можно относиться так, как и ожидалось.

Может ли кто-нибудь предложить какое-либо представление о том, почему инициализируются только некоторые данные-члены?

Спасибо!

Это было полезно?

Решение

Оказывается, эта проблема была связана с другой проблемой, с которой я столкнулся.Видеть эта тема для резолюции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top