On 11/6/06, JupiterHost.Net <[EMAIL PROTECTED]> wrote:
Muttley Meen wrote: > Hi! Hello, > $a = Package1::new(); > $a->Package2->Create(); # this should call IncErr too > print "ERR1: $a->{err}\n"; # should print 1 > doent't work as I expected. > > Is there something wrong with the way I `bless`-ed the class Package2 ? use strict, warnings, and most important: use base And don;t use $a or $b as variable names, oi :) Damian Conway's "Perl Best Practice" will make your life much easier!
I thought that $a might've been the cause :P Anyway, I come to see my flaw, which was the misconception of inheritance. I thought if B is inherited from A, and A was instantiated, then the Bs members will refer to the same memory locations as As members, which is wrong. I could deal with this by passing a parameter to the child constructor, pointing to the parent $this reference. Mumia, use Class::Struct uses the same trick of defining an array of methods, similar to my $this->{r} used in the attached test.pl. Actually Class::Struct generates perl code in a variable, and then evaluates it. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>