Thank you!

I tried the SUPER->_init() and that took care of it.  However, I donn't
want to force an inherited class to have to know how the parent's new()
works, so I tried this as well (and it worked) - I have the new() call
it's own _init explicitly:

# the new() from Logon.pm   
sub new {
     my $that = shift;
     my $class = ref($that) || $that;
     my $self = $class->SUPER::new();
     $self->Logon::_init();
     return $self;
   }

# the new() from DBLogon.pm   
sub new {
     my $that = shift;
     my $class = ref($that) || $that;
     my $self = $class->SUPER::new();
     $self->DBLogon::_init();
     return $self;
   }

Thanks again, I've been fighting this for quite a while.

-----Original Message-----
From: Jeff 'japhy' Pinyan [mailto:[EMAIL PROTECTED] 
Sent: Thursday, March 31, 2005 7:18 PM
To: [EMAIL PROTECTED]
Cc: beginners@perl.org
Subject: Re: Attempting OO with Perl - New() method in subclass not
working


On Mar 31, [EMAIL PROTECTED] said:

> When I try to assign values to the DBLogon object's attributes, I get 
> the following error: "Can't access 'USERID' field in object of class 
> DBLogon at testdblogon.pl line 7".  What am I missing?

The problem is that Logon's new() method is calling LogonDB's _init() 
method.  To get around that, you'll have to do:

   package DBLogon;
   use Logon;
   @ISA = qw (Logon);
   use Carp;

   sub new {
     my $that = shift;
     my $class = ref($that) || $that;
     my $self = $class->SUPER::new();
     $self->SUPER::_init();
     return $self;
   }

-- 
Jeff "japhy" Pinyan         %  How can we ever be the sold short or
RPI Acacia Brother #734     %  the cheated, we who for every service
http://japhy.perlmonk.org/  %  have long ago been overpaid?
http://www.perlmonks.org/   %    -- Meister Eckhart

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to