Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben
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

Geschrieben

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

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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