user342706
user342706

Reputation:

Inheritance and child methods

For some reason I'm not able to access the child methods on the boundary object. I would appreciate as much detail with an answer as possible as I'm still a bit confused on inheritance with perl, especially the bless portion. Also any constructive criticism would be great about overall design.

Generic.pm (Base Class)

package AccessList::Generic;
use strict;
use warnings;

sub new {
    my $class = shift;
    my $self = {
        rules => [],
        @_
    };
    bless $self, $class;
    return $self;
}

sub get_line_count {
    my $self = shift;
    return scalar @{$self->{rules}};
}

1;

Extended.pm

package AccessList::Extended;
use strict;
use warnings;
use AccessList::Generic;

use base qw(AccessList::Generic);

sub new {
    my ($class, @args) = @_;
    my $self = $class->SUPER::new(@args);
    return $self;
}


1;

Boundary.pm

package AccessList::Extended::Boundary;
use strict;
use warnings;
use AccessList::Extended;

use base qw(AccessList::Extended);

sub new {
    my ($class, @args) = @_;
    my $self = $class->SUPER::new(@args);
    return $self;
}

sub get_acl_information {
    my ($self) = @_;
    return;
}

1;

Failing Test

can_ok('AccessList::Extended::Boundary', 'get_acl_information');

Error Message

#   Failed test 'AccessList::Extended::Boundary->can('get_acl_information')'
#   at t/b1.t line 42.
#     AccessList::Extended::Boundary->can('get_acl_information') failed
# Looks like you failed 1 test of 2.

Upvotes: 1

Views: 106

Answers (1)

ikegami
ikegami

Reputation: 386646

I don't see any problems in what you posted. The problem is surely in what you didn't post. Did you forget to load AccessList::Extended::Boundary?

$ find -type f
./AccessList/Extended/Boundary.pm
./AccessList/Extended.pm
./AccessList/Generic.pm

$ perl -E'
   use Test::More tests => 1;
   use AccessList::Extended::Boundary;
   can_ok("AccessList::Extended::Boundary", "get_acl_information");
'
1..1
ok 1 - AccessList::Extended::Boundary->can('get_acl_information')

Upvotes: 3

Related Questions