|
Posted by rthangam on February 22, 2008, 5:34 am
Please log in for more thread options
> Hi!
>
> I need to create a double linked tree so I want to use objects and
> therefore read the Class::Struct manual and the Perl FAQ entry. One
> thing I can't figure out though is how to store a object reference.
>
> The following code works, and stores references in the childs hash:
>
> use strict;
> use warnings;
> use Data::Dumper;
> use Class::Struct qw(struct);
>
> struct FooBar => {
> foo => '$',
> bar => '$',
> parent => 'FooBar',
> childs => '%',
>
> };
>
> my $aaa = new FooBar(foo => "aaa", bar => "AAA");
> my $bbb = new FooBar(foo => "bbb", bar => "BBB");
> $bbb->parent($aaa);
> $aaa->childs("bbb" => $bbb);
>
> print Dumper($aaa);
> print Dumper($bbb);
>
> print $->foo, "\n";
> print $bbb->parent->foo, "\n";
>
> According to the manual, I should be able to define
>
> parent => '*FooBar'
>
> and store a object reference in it. But I then can't assign a value any
> longer. Both
>
> $bbb->parent($aaa);
> $bbb->parent($aaa);
>
> give me a "parent argument is wrong class" error. So how do I store a
> object reference in a struct?!
>
> tia, stephan
An object is perl is a reference which knows which class it belongs to
so simply passing $aaa should be enough, which you have done it anyway
in your code.
1. An object is simply a reference that happens to know which class
it belongs to.
2. A class is simply a package that happens to provide methods to
deal with object references.
3. A method is simply a subroutine that expects an object reference
(or a package name, for class methods) as the first argument.
|