[fpc-pascal] Wrong constructor returning the right object

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Sun Feb 23 16:05:56 CET 2014


Jeppe Græsdal Johansen wrote:

>> I find that if I explicitly decorate TB5500BaseUnit.Create() as 
>> virtual and TB5500SPOUnit.Create() as override then 
>> TB5500SPOUnit.Create() is called correctly. I didn't think this was 
>> necessary, but on reflection I assume that it's because u is declared 
>> as a TB5500BaseUnit: the variable's compile-time rather than run-time 
>> class is being used for the constructor unless explicitly overridden.
>>
>> Is there an obvious way of tiying this up that I'm overlooking?
>>
> You have forgotten to declare the constructor virtual.

I said I'd fixed it by declaring the constructor virtual, but that I'm 
not entirely confident in my understanding of why that's necessary.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list