Zum Inhalt springen

[Perl] Referenzen


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...