Re: [C++-sig] problem chaning object state using a python class that inherits from c++ class
David, Here is an example (excuse the formatting, because I don't know how to change it from yahoo mail) struct Data { int a; double b; }; class B { public: virtual void Update(Data& a, int ellapsedTime) = 0; ~B() {} }; class D : public B { virtual void Update(Data& a, int ellapsedTime) { a.a = 10; a.b = -9; } }; #include <boost/shared_ptr.hpp> class C { public: void SetBptr(boost::shared_ptr<B> newB) { Bptr = newB; } void Update(int ellapsedTime) { if (Bptr.get()) { B *ptr = Bptr.get(); ptr->Update(d,ellapsedTime); } } int GetData_a() const { return d.a; } double GetData_b() const { return d.b; } private: Data d; boost::shared_ptr<B> Bptr; }; The pyste code: Class("Data","test.h") B = Class("B","test.h") use_shared_ptr(B) Class("C","test.h") D = Class("D","test.h") final(D.Update) An example of the error:
from PysteError import * c = C() d = D() c.SetBptr(d) c.Update(1) print c.GetData_a() 10 print c.GetData_b() -9.0 class E(B): ... def Update(self,data,val): ... data.a = -8; ... data.b = -1; ... e = E() c.SetBptr(e) c.Update(1) print c.GetData_a() 10 print c.GetData_b() -9.0 cc = C() cc.SetBptr(e) cc.Update(1) print cc.GetData_a() 6488163 print cc.GetData_b() 6.95352557184e-308
Hope this is clearer now ;) Thanks for you help, Alexis Programming Tutorial: In Python: To do this, do this In Perl: To do this, do this or this or this or this... In C: To do this, do this, but be careful In C++: To do this, do this, but don't do this, be careful of this, watch out for this, and whatever you do, don't do this ____________________________________________________ Start your day with Yahoo! - make it your home page http://www.yahoo.com/r/hs
participants (1)
-
Alexis H. Rivera-Rios