... use of ... is hidden by ...; use alias ... to introduce base class overload set ??

Robert M. Münch robert.muench at saphirion.com
Tue Oct 22 20:23:56 UTC 2019


On 2019-10-21 18:02:06 +0000, Robert M. Münch said:

> This now gives:
> 
> rx_filter_subject.d(66,23): Error: 
> rx_filter_subject.FilterSubject.subscribe called with argument types 
> (myWidget) matches both:
> 
> /Users/robby/.dub/packages/rx-0.13.0/rx/source/rx/subject.d(72,16):
> rx.subject.SubjectObject!(message).SubjectObject.subscribe!(myWidget).subscribe(myWidget 
> observer)
> 
> and:
> 
> rx_filter_subject.d(47,14): 
> rx_filter_subject.FilterSubject.subscribe(myWidget observer)
> 
> So, now there is an ambiguty.

I'm really stuck on this which looks like a dead-lock to me. Adding 
"override" gives:

class myWidget : Observer!message {...}

class FilterSubject : SubjectObject!message {
  override Disposable subscribe(myWidget observer){...}
}

rx_filter_subject.d(47,23): Error: function Disposable 
rx_filter_subject.FilterSubject.subscribe(myWidget observer) does not 
override any function, did you mean to override template 
rx.subject.SubjectObject!(message).SubjectObject.subscribe(T)(T 
observer)?

rx_filter_subject.d(47,23):        Functions are the only declarations 
that may be overriden

So, I can't override but when I use an alias I get an ambiguty error... 
now what?

The only solution I have is to use a different name, but that would 
change the interface and run against all the OOP ideas. The whole code 
can be found here: https://pastebin.com/5BTT16Ze


-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster



More information about the Digitalmars-d-learn mailing list