Dlang Polymorphism doesn't work as expected.
Enjoys Math
enjoysmath at gmail.com
Sun Sep 4 17:50:10 UTC 2022
On Sunday, 4 September 2022 at 17:43:33 UTC, Enjoys Math wrote:
> On Sunday, 4 September 2022 at 17:38:54 UTC, Enjoys Math wrote:
>> On Sunday, 4 September 2022 at 17:36:24 UTC, Enjoys Math wrote:
>>> I have the following MWE:
>>>
>>> ```
>>> import std.exception;
>>> import std.stdio;
>>>
>>> abstract class B
>>> {
>>> B opCall() {
>>> throw new Exception("NotImplemented");
>>> }
>>> }
>>>
>>> class A : B
>>> {
>>> override B opCall() {
>>> return new A();
>>> }
>>> }
>>>
>>> int main() {
>>> B a = new A();
>>> a();
>>> readln();
>>> return 0;
>>> }
>>>
>>> ```
>>>
>>> But B.opCall() gets called! I thought polymorphism was cool
>>> until now....
>>>
>>> How can I get this to work the way I expected it to? Would
>>> an abstract method in base do it?
>>
>> Okay... now the MWE works as I expected polymorphism to work,
>> but my complicated library is not doing it right...
>>
>> :\
>
> Here is a link to the library on github. Please help me solve
> this!! :D
>
> https://github.com/enjoysmath/diagram-chaser
Simply git clone it and run from main.d or hit debug in VisualD
to see my problem. It's calling the base class method which
throws a NotImplemented exception, but it should be calling one
of the derived subclasses. I will keep coding on it and update
the code, but if I get it fixed, I'll post an update here.
More information about the Digitalmars-d
mailing list