Siechfred: OOP: Konstruktorfunktion

Beitrag lesen

kann mir jemand auf den Code mal schauen. Warum Funktioniert das nicht?

Weil du ein paar Basics nicht beachtet hast.

sub new
{
my $obj = @_;

Was soll das werden? In @_ stehen alle Parameter, die der Konstruktorfunktion übergeben wurden. Im OO-Kontext ist der erste Parameter immer der Klassenname (beim Konstruktor) bzw. die Objektreferenz (bei Aufruf von Objektmethoden). Jetzt überlege mal, was du hier welcher Variablen zuweist. Tipp: '@_' ist ein Array.

Jetzt, da du überlegt hast, wirst du sicher wissen, dass ein Array im Listenkontext die Anzahl der enthaltenen Elemente zurückgibt. Und genau darauf weist dich Perl hin:

die Methode CreateMenue funktioert nicht (Can't locate object method "CreateMenue" via package "1" at test.pl line 7)

Dein Package heißt nämlich nicht 'FormManager' sondern '1'. Damit verlierst du den Zugriff auf die Klasse Formmanager, eine Klasse '1' existiert nicht (dieser Name wäre m.W. auch unzulässig).

Ist mir noch zu helfen?

Ja, durch Lesen:
http://perldoc.perl.org/perltoot.html#Planning-for-the-Future%3A-Better-Constructors

Siechfred

--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.