Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9054[/thread]

OOP: Objekterzeugung klappt nicht: (undefined value?)



<< >> 4 Einträge, 1 Seite
Lightman
 2007-05-31 20:53
#77167 #77167
User since
2007-01-31
57 Artikel
BenutzerIn
[default_avatar]
Hallo,

eine Klasse soll Objekte als Felder besitzen, nur leider klappt das Instanzieren nicht.

Der Konstruktor sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub new {
   my ($class, %arg_of) = @_;

   my $self = bless {
       _config => undef,
   }, $class;

   $self->{_config} = CMS::Config->new();

   return $self;
}

_config soll dabei das Objekt einer anderen Klasse sein. Nur bleibt _config undefiniert, d.h. $self->{_config} liefert undef.

Was mache ich falsch?
pq
 2007-05-31 20:58
#77168 #77168
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
dann liefert CMS::Config->new() auch undef. der konstruktor
ist so in ordnung.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Lightman
 2007-05-31 21:06
#77169 #77169
User since
2007-01-31
57 Artikel
BenutzerIn
[default_avatar]
Hallo pq,

CMS::Config->new() funktioniert einwandfrei, d.h.
Code: (dl )
    my $config = CMS::Config->new();

erzeugt ein Objekt. Nur bei $self->{_config} klappt es nicht.

// Edit:
Der Fehler lag ganz woanders. Nicht $self->{_config} war undef, sondern $self. Schön blöd, wenn man &get_config() innerhalb der Klasse aufruft, ohne $self zu übergeben. ;)

Trotzdem vielen Dank!\n\n

<!--EDIT|Lightman|1180632123-->
pq
 2007-06-01 11:44
#77170 #77170
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
nochmal ein kommentar dazu:
$self->{_config} = CMS::Config->new();
$self->{_config} ist direkt danach undef und CMS::Config->new() liefert
geprüfterweise kein undef. wenn du das direkt vor und nach dem new
mit einem print-statement geprüft hättest, hättest du viel schneller
gemerkt, dass der fehler ganz woanders liegt.
also, das nächste mal einfach etwas mehr debuggen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 4 Einträge, 1 Seite



View all threads created 2007-05-31 20:53.