virtual-by-default rant

Simen Kjærås simen.kjaras at gmail.com
Sat Mar 17 18:49:22 PDT 2012


On Sun, 18 Mar 2012 02:23:31 +0100, Manu <turkeyman at gmail.com> wrote:

> The virtual model broken. I've complained about it lots, and people  
> always
> say "stfu, use 'final:' at the top of your class".
>
> That sounds tolerable in theory, except there's no 'virtual' keyword to
> keep the virtual-ness of those 1-2 virtual functions I have... so it's no
> good (unless I rearrange my class, breaking the logical grouping of stuff
> in it).
> So I try that, and when I do, it complains: "Error: variable
> demu.memmap.MemMap.machine final cannot be applied to variable",  
> allegedly
> a D1 remnant.
> So what do I do? Another workaround? Tag everything as final  
> individually?

class Foo {
     final {
         // Final functions here.
     }
     // Virtual functions here.
}

Good?


> My minimum recommendation: D needs an explicit 'virtual' keyword, and to
> fix that D1 bug, so putting final: at the top of your class works, and
> everything from there works as it should.

I agree that a virtual keyword would sometimes be a boon. With the solution
outlined above, I find it a minor nit, though.


More information about the Digitalmars-d mailing list