binding SWIG per Python / lua non inizializzare i dati dei membri correttamente [chiusa]
-
06-09-2019 - |
Domanda
Sto cercando di costruire una serie di attacchi Lua per una collezione di classi C ++, ma sono stato a giocare con Python per vedere se ottengo risultati migliori. In entrambe le lingue le associazioni sembrano funzionare, tuttavia, quando ho inizializzare un'istanza di una classe che contiene i membri di altre classi, tali dati membri non sembrano essere garantita essere inizializzato.
Per esempio, prendete la classe:
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.
Quando ho generare associazioni per una classe come questa, sono in grado di eseguire istruzioni come:
var = module_name.MyClass()
print(var.sc.x, var.sc.y)
E mi vengono i valori spazzatura previsti riportati alla schermata. Tuttavia, se provo a stampare nulla circa l'istanza di OtherClass, diventa evidente che si tratta di "spense" - in Lua non ha metatabella a tutti e in Python facendo dir (var.oc) dà solo le funzioni predefinite. Tuttavia, se poi faccio:
var.oc = module_name.OtherClass()
Il / dir (oc) chiamata oc metatabella sono quello che avrei sperato e può essere trattata come previsto.
Qualcuno può offrire alcuna comprensione perché solo -some- dei dati membri vengono inizializzati?
Grazie!
Soluzione
Si scopre che il problema era legato a un altro problema che stavo avendo. Vedi questa discussione per la risoluzione.