Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 30-01-2009
poyo poyo is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
poyo Va por buen camino
Bueno, primero quería decir que gracias por las respuestas.
Segundo que, lo que quiero hacer, responde a generar automáticamente una especie de árbol de categorías de objetos que tengo creados en base a sus clases abstractas... todas dedivan de una clase madre pero el tema es que se desconozcen la demás ya que la idea es expandir el sistema mediante plugins.

Comento lo que estuve viendo.

Es raro todo esto... pareciera como que lo de las clases abstractas está implementado a medias o no está del todo claro.
En la documentación dice:

"An abstract class is a class with at least one pure virtual function. A virtual function is specified as pure by setting it equal to zero. An abstract class can be used only as a base class for other classes. No objects of an abstract class can be created. An abstract class cannot be used as an argument type or as a function return type. However, you can declare pointers to an abstract class. References to an abstract class are allowed, provided that a temporary object is not needed in the initialization."


hice la siguiente prueba:

declaré:
Código Delphi [-]
procedure TMyClass.showa;
begin
  showmessage(IntToStr(a));
end;

function TMyClass.retself: TMyClass;
begin
  result := self;
end;

procedure TMyClass.ArgOfAbstractClass(AClass: TMyClass);
begin
  //do nothing
end;

implementation

procedure TMyClass.showa;
begin
  showmessage(IntToStr(a));
end;

////////////////////

procedure prueba;
var
  a : TMyClass;
begin
  a := TMyClass.Create;
  a.a := 10;
  a.showa;
  showmessage(a.retself.ClassName);
end;

Y lo ejecuté y funcionó como si nada... el compilador no me tiró ni un warning y en runtime tampoco se me avisó de nada.

revisé los units Typinfo, system y classes y no vi nada que haga referencia.
A lo mejor no revisé bien... aunque por la manera de funcionar, o no estoy entendiendo del todo el concepto o está medio verde la implementación.

parece que TMyClass = class abstract funciona como si fuera un simple comentario
TMyClass = class // abstract

de hecho si se declara de la siguiente manera compila igual:
TMyClass = class abstract abstract abstract abstract abstract abstract abstract abstract
curioso, no?

Ya me arreglé (provisoriamente) poniéndo una función virtual llamada "isBaseClass".
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
como conectarme a otra pc sin la ip kurono Varios 4 09-11-2008 17:24:36
Saber que ventana tiene el foco en otra máquina INGENIERIA API de Windows 0 14-03-2008 12:49:22
Sobreviven varios meses a la deriva Al González Noticias 4 19-08-2006 00:03:57
Duda! donde crear una Classe¿? kye_z OOP 4 27-10-2004 16:14:59
Saber si otra aplicacion esta en ejecucion Salomon Varios 3 07-10-2003 18:19:31


La franja horaria es GMT +2. Ahora son las 08:53:45.


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