in reply to Perlxs and C++ inheritance

When the object address is set into SV in descendant method wrapper, and is extracted in parent method wrapper, the address of the parent object will always same with the address of the descendant object. However, in some C++ cases, the address of an parent object is different from the address of the object itself. So the address may be incorrect.

However many times you use INT2PTR or PTR2IV , the integer that is the pointer that is the c/c++ object, should always remain the same... otherwise you're dealing with a different object

I think a minimal code which reproduces the problem is critical to diagnosing this :)

Replies are listed 'Best First'.
Re^2: Perlxs and C++ inheritance
by llancet (Friar) on Apr 24, 2014 at 09:13 UTC
    Yes it is always remain the same. The problem is: sometimes C++ need it to be different. For example, in multiple inheritance:
    class Base1 {}; class Base2 {}; class Derived: public Base1, Base2 {}; ... Derived* obj = new Derived(); Base2* base_pointer = static_cast<Base2*> obj;

      I don't understand :)(not that I did understand better before)

        I asked this question on StackOverflow from the aspect of C++. There are some guys provided useful hints:

        http://stackoverflow.com/questions/23451982/is-it-unsafe-to-store-derived-object-to-void-then-cast-base-object-out-of-it