Jue Ago 25, 2005 2:18 am
|
 |
serruxa
Perlero Nuevo

|
Registrado: 16 Ago 2005
Mensajes: 5
|
|
| como pasar los objetos en los procedimientos |
|
|
Hola estoy trabajando con clases. Tengo mi programa principal, que crea un objeto "Objeto1" de la clase "Clase1" , este objeto necesito que lo utilice un procedimiento de otra clase "Clase2", por tanto se lo paso al constructor
$Objeto2 = clases::chuponAreapc->new($Objeto1).
Ahora el procedimiento "Procedimiento" que esta en la clase "Clase2" debería utilizar "Objeto1". Pero me da un error tal que:
Can't call method "miProcedimiento" on an undefined value at "clase2" line 180.
Espero que lo entendais
Una ayudita?????Graciassss |
|
|
|

Jue Ago 25, 2005 8:46 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola:
Lo primero es que te recomiendo que mandes una referencia del objeto:
| Código: |
| $Objeto2 = clases::chuponAreapc->new(\$Objeto1); |
Ahora, como no nos muestras el código que tienes en el constructor de tu Objeto2, no te podría decir a ciencia cierta cual podría ser tu error.
http://www.perldoc.com/perl5.8.4/pod/perlref.html
SALUDOS |
|

Jue Ago 25, 2005 9:16 am
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
|
|
|
Se supone que quieres guardar el objeto1 dentro de clases2. Yo aquí lo guardo dentro de un hash, y luego lo recupero cuando necesito hacer la llamada al procedimiento1.
Sea clase1.pm:
| Código: |
package clase1;
use strict;
sub new {
my $class = shift;
my $self = {};
bless($self,$class);
return $self;
}
sub procedimiento1 {
my $self = shift;
print "Procedimiento en clases1 llamado\n";
}
1; |
Sea clase2.pm:
| Código: |
package clase2;
use strict;
sub new {
my $class = shift;
my $objeto1 = shift;
my $self = { Objeto1 => $objeto1 };
bless($self,$class);
return $self;
}
sub procedimiento2 {
my $self = shift;
my $other= $self->{ Objeto1 };
print "Llamando a procedimiento1 en clases1\n";
$other->procedimiento1;
}
1; |
Sea el programa:
| Código: |
#!/usr/bin/perl -w
package main;
use lib '.';
use clase1;
use clase2;
use strict;
my $Objeto1 = clase1->new;
my $Objeto2 = clase2->new( $Objeto1 );
print "Llamando a procedimiento2\n";
$Objeto2->procedimiento2;
|
Sea el resultado:
| Código: |
Llamando a procedimiento2
Llamando a procedimiento1 en clases1
Procedimiento en clases1 llamado |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|