2009-05-27 6 views
0

Ich versuche, eine Reihe von Lua-Bindungen für eine Sammlung von C++ - Klassen zu erstellen, habe aber mit Python gespielt, um zu sehen, ob ich bessere Ergebnisse erziele. In beiden Sprachen scheinen die Bindungen jedoch zu funktionieren, wenn ich eine Instanz einer Klasse initialisiere, die Mitglieder anderer Klassen enthält, scheinen diese Datenelemente nicht garantiert initialisiert zu werden.Swig-Bindungen für Python/Lua initialisieren Mitgliederdaten nicht richtig

Nehmen wir zum Beispiel die Klasse:

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. 

Wenn ich Bindungen für eine Klasse wie diese erzeugen, ich bin in der Lage auszuführen Aussagen wie:

var = module_name.MyClass() 
print(var.sc.x, var.sc.y) 

Und ich bekomme die erwarteten Junk-Werte auf den Bildschirm gedruckt. Wenn ich jedoch versuche, etwas über die Instanz von OtherClass zu drucken, wird es offensichtlich, dass es "ausgeklammert" ist - in Lua hat es überhaupt kein Metatable und in Python gibt dir (var.oc) nur die Standardfunktionen. Allerdings, wenn ich dann tun:

var.oc = module_name.OtherClass() 

Die oc Metatabelle/dir (oc) telefonieren, was ich zu hoffen gewagt, und es kann erwartet werden, behandelt.

Kann jemand einen Einblick geben, warum nur einige der Mitgliedsdaten initialisiert werden?

Danke!

Antwort

0

Es stellte sich heraus, dass dieses Problem mit einem anderen Problem zusammenhing, das ich hatte. Siehe this thread für die Auflösung.