Thread Zugriff auf Objekt-Attribut aus privater Methode (2 answers)
Opened by darkwave at 2008-07-07 11:52

darkwave
 2008-07-07 11:52
#111901 #111901
User since
2008-07-07
2 Artikel
BenutzerIn
[default_avatar]
Hallo erst mal.

Ich hoffe jemand von euch kann mir helfen.
Ich habe folgende klasse:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package Synchronizer;
use strict;
use File::Find;

#constructor
sub new {
my ($class) = @_;
my $self = {
_myattribut => "",
};
bless $self, $class;
return $self;
}

# Private Methode. (in Objekt (find) selbst aufgerufen)
sub _privmethode{
ref(my $class = shift);
my $myattribut = $class->{_myattribut};
print $myattribut;
....
}

sub synchronize{
my $mref = $self->can('_privmethode');
my $rfolder = "c:\";
find ($mref, $rfolder);
....
}


Folgendes (sollte) passiert:
Ich mache ein Objekt und rufe synchronize() auf. Nun wird find aufgerufen, welches wiederum _privmethode aufruft für jede Datei welche in c:\ ist.
In _privmethode möchte ich auf das Objekt-Attribut $myattribut zugreifen. Dies klappt jedoch nicht.
Folgende Fehlermeldung erscheind beim print: "Use of uninitialized value $myattribut in concatenation (.).."

Das Problem ist folgendes: mit $self->can('_privmethode') bekomme ich zwar die Referenz auf _privmethode, jedoch nicht zu welchem Objekt diese Methode gehört. Somit ruft find() einfach die Methode auf, übergibt ihr aber nicht zu welchem Objekt sie gehört und ref(my $class = shift)liefert nichts zurück...;

Meine Frage nun: wie kann ich von dieser Methode (_privmethode), welche im Objekt selbst aufgerufen wird, auf das Objekt-Attribut (_myattribut) zugreifen?

View full thread Zugriff auf Objekt-Attribut aus privater Methode