override(T)

Robert Jacques sandford at jhu.edu
Thu Sep 24 09:21:24 PDT 2009


On Thu, 24 Sep 2009 09:30:46 -0400, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:
> Walter and I discussed last night about contravariance and all and could  
> not find a compelling argument in favor of implementing contravariant  
> arguments right now. The feature is nontrivial to implement, potentially  
> surprising, and has a number of odd corner cases.
>
> One feature that does get requested often in C++ and Java is the ability  
> to choose which class/interface contains the method you want to  
> override. Consider:
>
> interface Lottery {  void draw();  }
> interface Figure {  void draw();  }
>
> class LotterySimulation : Lottery, Figure {
>      override void draw();
> }
>
> Right now draw() overrides both methods, but you'd want to override them  
> separately. You could do so through an intermediate interface:
>
> class Figure2 : Figure {  void draw2() { return draw(); }  }
> class LotterySimulation : Lottery, Figure2 {
>      override void draw();
>      override void draw2();
> }
>
> There are a few problems with this, among which the fact that  
> LotterySimulation now cannot inherit another class; the one class slot  
> was occupied by Figure2.
>
> So I was thinking of this:
>
> class LotterySimulation : Lottery, Figure {
>      override(Lottery) void draw();
>      override(Figure) void draw();
> }
>
> This is easy to implement, scales well, and has good real world uses.  
> What say you?
>
>
> Andrei

Umm, but what method would LotterySimulation.draw call? Would it be the  
override(Lottery) method or the override(Figure) method?



More information about the Digitalmars-d mailing list