Sex, 2008-09-19 às 17:49 +0200, TSa escreveu: > Daniel Ruoso wrote: > > Qui, 2008-09-18 às 18:11 +0200, TSa escreveu: > >> Shouldn't there be a warning in B that $!B::bar overwrites $!A::bar > >> without an accessor? > > Actually, $!B::bar doesn't overwrite $!A::bar... the problem is simply > > that $!A::bar is not visible from inside B, and therefore, there's > > nothing to be overriden... > May I pose three more questions? > > 1. I guess that even using $!A::bar in methods of B is an > access violation, right? I.e. A needs to trust B for that > to be allowed.
Yes > 2. The object has to carry $!A::bar and $!B::bar separately, right? Yes > 3. How are attribute storage locations handled in multiple inheritance? > Are all base classes virtual and hence their slots appear only once > in the object's storage? In SMOP, it is handled based on the package of the Class, the private storage inside the object is something like $obj.^!private_storage<A::><$!bar> and $ojb.^!private_storage<B::><$!bar> daniel