----- "Jonas Maebe" <[email protected]> schreef: 
> 
> 

On 21 Dec 2010, at 00:16, Jonas Maebe wrote: 



On 20 Dec 2010, at 21:37, Sven Barth wrote: 
> 
> 

- should abstract methods be forbidden? 
> Yes, since 
> a) they are virtual 
> b) even if it were possible to have virtual methods, there would be no way to 
> override them with implementations that do something (since you cannot 
> inherit from a class helper) 
> 
> 
Actually, it seems that inheritance is in fact allowed for Delphi-style class 
helpers: http://qc.embarcadero.com/wc/qcmain.aspx?d=76577 (it's not for 
Objective-C categories). But I'm still quite sure you cannot do anything that 
requires changes to the VMT of the helped class. 

> 
There are also at some extra checks that must be added for 
constructors/destructors introduced via class helpers (Objective-C/Pascal 
doesn't have constructors or destructors, so it doesn't matter there): 
* 
http://docwiki.embarcadero.com/RADStudio/en/E2295_A_class_helper_cannot_introduce_a_destructor_(Delphi)
 
* 
http://docwiki.embarcadero.com/RADStudio/en/E2296_A_constructor_introduced_in_a_class_helper_must_call_the_parameterless_constructor_of_the_helped_class_as_the_first_statement_(Delphi)
 
* 
http://docwiki.embarcadero.com/RADStudio/en/E2358_Class_constructors_not_allowed_in_class_helpers_(Delphi)
 

> 

hi, 

it seems that the virtual methods can be overridden (AOP style) using the 
TVirtualMethodInterceptor that comes with Delphi XE. It can also be on a per 
instance base (as opposed to on a per type) if I've read up on it correctly. 

I'd say that would be a better candidate for that purpose/intent/use case. 

kind regards, 
Dimitri Smits 


_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to