Ganymed Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 Hallo zusammen, zuerst: ich bin ein Perl Newbie und bin in einen Code reingeschmissen worden, der OOP ist. Und nun verzweifel ich grad an folgenden Dingen. Folgendes: Ich habe zwei Klassen: eine Klasse Box und eine Klasse Layer von der Klasse Layer habe ich ein Objekt erzeugt: $test = new Klasse::Layer('Hallo',1,1); von der Klasse Box habe ich ebenfalls ein Objekt erzeugt: $BoxObject = new Klasse::Box(new Klasse::Position, new Klasse::Groesse); Beides Funktioniert ohne Probleme. Nun möchte ich aus dem $BoxObject die Methode GetLayerName() aufrufen. In dem Package, wo die Klasse ist, ist diese Methode wiefolge deklariert: sub GetLayerName {....} Diese Methode gibt einen Pointer auf ein Object der Klasse Layer zurück (hab ich aus der Doku hier). Nun mach ich folgendes. Wenn diese Funktion ja einen Pointer auf ein LayerObjekt erwartet, dann schreibe ich auch in eins: $test = $BoxObject->GetLayerName; Mit dem $test Layer Object möchte ich nun was anstellen, nämlich den Namen setzen: $test->setzeName('Hallihallo'); Deklariert ist die Methode wiefolgt: *setzeName= *PackageXY::SetLayerName; (es verweist auf eine Externe C-Source)... Führe ich mein Skript nun aus bekomme ich folgende Fehlemeldung: Can't call method "setzeName" on unblessed referecne at Name der Anwendung Ich glaube, das liegt an diesem besonderen Aufruf von "setzeName". Kann mir da wer helfen? Ich blick da nicht durch und ich weiß auch nicht, nach welchem Schlagwort ich googeln soll... Gruß Ganymed Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerWolf Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 Hallo Gany, kannst du mal deinen Code posten? Nur mit den Codeausschnitten kann ich nichts anfangen .... mit dem gesamten (zumindest diesen Teilausschnitt) Code könnte ich mich da mal etwas einarbeiten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerWolf Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 bzw. gib doch mal deine Fehlermeldung bei google ein .... vielleicht hast du da nen Treffer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 Hallo Gany, kannst du mal deinen Code posten? Nur mit den Codeausschnitten kann ich nichts anfangen .... mit dem gesamten (zumindest diesen Teilausschnitt) Code könnte ich mich da mal etwas einarbeiten. Das ist das Problem: Das ist über 3 Dateien verteilt und das sind die entscheidenen Zeilen. Das mit der Meldung versuch ich mal - so einfach... Mal sehen, was draus wird Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bRuTeForCe Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 A method call must know in what package it's supposed to run. It ordinarily finds this out from the object reference you supply, but you didn't supply an object reference in this case. A reference isn't an object reference until it has been blessed!!!!! bRuTeForCe alias brainslave Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 A method call must know in what package it's supposed to run. It ordinarily finds this out from the object reference you supply, but you didn't supply an object reference in this case. A reference isn't an object reference until it has been blessed!!!!! Und was heißt das jetzt? Das Object hat ein bless() im Kontruktor... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bRuTeForCe Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 sorry but RTFM http://www.perl.com/doc/manual/html/pod/perlobj.html ....... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.