• Publicidad

como pasar los objetos en los procedimientos

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

como pasar los objetos en los procedimientos

Notapor serruxa » 2005-08-25 03:18 @179

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
serruxa
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-08-16 04:28 @228

Publicidad

Notapor kidd » 2005-08-25 09:46 @448

Hola:

Lo primero es que te recomiendo que mandes una referencia del objeto:

Código: Seleccionar todo
$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
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer39 » 2005-08-25 10:16 @470

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: Seleccionar todo
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: Seleccionar todo
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: Seleccionar todo
#!/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: Seleccionar todo
Llamando a procedimiento2
Llamando a procedimiento1 en clases1
Procedimiento en clases1 llamado
explorer39
 


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados