Open Methods: From C++ to D

EntangledQuanta via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Aug 31 14:42:50 PDT 2017


On Thursday, 31 August 2017 at 21:02:26 UTC, Jean-Louis Leroy 
wrote:
> On Thursday, 31 August 2017 at 20:42:36 UTC, EntangledQuanta 
> wrote:
>> On Wednesday, 30 August 2017 at 18:16:47 UTC, jmh530 wrote:
>>> [...]
>>
>> I was getting similar errors and simply added a 
>> cast(size_t)[used in the indexing, as he used ulongs for 
>> indexes rather than size_t] to all those you mention. After 
>> that I got more errors that I can't recall now but was much 
>> more cryptic. I did updateMethods and added the mixin but 
>> things wern't working so I gave up. Seems like a nice idea, 
>> although, the downside that I see is one doesn't get 
>> encapsulation.
>
> It's fixed now, in master and in release v1.0.0-rc.2.

I'll check it out. I don't think the last errors I was getting 
were due to the sizing issues though, so is that all you fixed or 
was there some other stuff related to windows?

> Actually not getting encapsulation is good. With vfuncs, if you 
> want polymorphism you get access to private parts, need it or 
> not. And most of the time you neither need nor want it.
>
> If you need polymorphism and privileged access, you should use 
> a vfunc but it's usually a sign of bad design, because a vfunc 
> is meant to be overridden. And the override won't have access 
> to the private parts so you may end up changing access from 
> private to protected and usually trouble follows.
>
> I can imagine legitimate cases though. Fox example, the 
> DiagonalMatrix addition example. In that case you can write a 
> public final member function that performs addition using 
> privileged access and call that from the 2-method 'plus'.
>

Yeah, but one should always be allowed to shoot themselves in the 
foot. You never know when you might do it. Maybe an alligator has 
attached itself to your foot and is about to drag you under water?

>
> ANother approach is to write the fvunc - or the 1-method - in 
> terms of the public interface. Usually it's feasible and yields 
> a better design.



More information about the Digitalmars-d-announce mailing list