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

Reply via email to