probleme création d'un " Container ".. - Perl - Programmation
MarshPosté le 22-07-2002 à 10:29:45
j'aimerais créer un "container" permettant de stocker des objets. pour cela je voudrais utiliser un tableau indicé dont chaque référence est le nom de l'objet et sa valeur serais la "référence" ( ou "l'adresse" ) de l'objet stocké.
je suis en train de faire des tests et j'ai un probleme.
lorsque je stocke un objet dans le container et que je le "reprend" , lors de l apel a une methode de celui-ci, j'ai ce message d'erreur qui s'affiche:
Not a HASH reference at class.pm line 34
voici mes codes :
sub new{
my($obj)= {}; $obj->{class}={}; $obj->{nb}=0;
bless ($obj); return $obj; }
sub testExistance{ my $obj = shift; my($ret)=0; if (@_) { $param=shift; if(exists ($obj->{class}{$param})){ $ret=1; } } return $ret; } sub ajout{ my $obj = shift; my($ret)=0; if (@_) { $nom=shift; $param=shift; $obj->{class}{$nom}=$param; $obj->{nb}++; $ret=1; } return $ret; }
sub get{ my $obj = shift; $ret=undef; if (@_) { $site=param; if($obj->testExistance($param)){ $ret=obj->{class}{$param}; } } return bless (\$ret ,ClassParam); }
pour les tests j'ecris ceci : ( les objets sont deja crées)
Marsh Posté le 22-07-2002 à 10:29:45
j'aimerais créer un "container" permettant de stocker des objets.
pour cela je voudrais utiliser un tableau indicé dont chaque référence est le nom de l'objet et sa valeur serais la "référence" ( ou "l'adresse" ) de l'objet stocké.
je suis en train de faire des tests et j'ai un probleme.
lorsque je stocke un objet dans le container et que je le "reprend" , lors de l apel a une methode de celui-ci, j'ai ce message d'erreur qui s'affiche:
Not a HASH reference at class.pm line 34
voici mes codes :
sub new{
my($obj)= {};
$obj->{class}={};
$obj->{nb}=0;
bless ($obj);
return $obj;
}
sub testExistance{
my $obj = shift;
my($ret)=0;
if (@_) {
$param=shift;
if(exists ($obj->{class}{$param})){
$ret=1;
}
}
return $ret;
}
sub ajout{
my $obj = shift;
my($ret)=0;
if (@_) {
$nom=shift;
$param=shift;
$obj->{class}{$nom}=$param;
$obj->{nb}++;
$ret=1;
}
return $ret;
}
sub get{
my $obj = shift;
$ret=undef;
if (@_) {
$site=param;
if($obj->testExistance($param)){
$ret=obj->{class}{$param};
}
}
return bless (\$ret ,ClassParam);
}
pour les tests j'ecris ceci : ( les objets sont deja crées)
$cont->ajout('obj1',$obj1);
$cont->ajout('obj2',$obj2);
$testObj=$cont->get('obj1';
$testObj->methode; # le probleme arrive a l'apel de cette methode!!
je pense que j'ai du faire des erreurs dans l'écriture de mon code..
mais lesquels??
j'attend vos avis