Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
¿¿Es posible pasar una clase como parámetro con el modificador var??

Bueno, es eso nomás!
Estoy realizando el clásico ejercicio de Arboles Binarios, el método "espejo", que devuelve un espejo del arbol binario actual, y pensé realizarlo de esta manera...

Código Delphi [-]
procedure TArbolBinario.espejo(ab: TArbolBinario;var ac: TArbolBinario);
var acd:TArbolBinario;
begin
   if ab.getRaiz<> nil then
     begin
        ac := TArbolBinario.create(ab.getDatoRaiz);

        if (ab.getRaiz.tieneHijoIzq) then
            self.espejo(ab.getHijoIzq,ac.getHijoDer);
        if (ab.getRaiz.tieneHijoDer) then
            self.espejo(ab.getHijoDer,ac.getHijoIzq);
     end;
end;

pero al compilar la clase arroja el siguiente error:
Cita:
[Error] ArbolBinario.pas(138): Types of actual and formal var parameters must be identical
¿Existe otra manera de plantear el mismo método? porque lo querá era que me devuelva el espejo del arbol binario ab, en la variable ac.
Gracias y saludos!
Responder Con Cita
  #2  
Antiguo 09-02-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
yo le llamo "pasar por valor" a pasar un parámetro sin el var.

Los objetos en delphi son en realidad punteros, aunque lo pases por valor siempre puedes modificar sus propiedades y métodos. Lo que no puedes hacer es modificar la dirección de memoria donde reside.... porque eso es lo que se pasa por valor.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 09-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
Thumbs up

Gracias Lepe!
Saludos!
Responder Con Cita
  #4  
Antiguo 09-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A mi me gustaría ver cómo es esa llamada que te produce el error. A juzgar por el intento que haces en tu código, estamos ante un caso en el que realmente se necesita pasar por referencia (usando var) el objeto, ya que estás regresando, no un objeto existente con propiedades modificadas, sino un nuevo objeto.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar array como parámetro santiago14 Varios 10 17-09-2008 14:31:00
Como pasar un parametro? b3nshi Varios 3 18-08-2007 06:54:53
Pasar SQL como parametro veloki Impresión 7 16-04-2007 15:28:37
pasar como parametro arrayq nenufer Varios 3 27-04-2006 16:43:13
Pasar como parametro el where en una funcion cso2000 MS SQL Server 2 15-02-2005 02:49:47


La franja horaria es GMT +2. Ahora son las 21:13:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi