Daniel Ruoso wrote:
> TSa wrote:
>> 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>

Note that this ought only be true of class inheritance; with role
composition, there should only be one $!bar in the class, no matter
how many roles define it.

-- 
Jonathan "Dataweaver" Lang

Reply via email to