| |
| Posted by Enjoys Math in reply to Enjoys Math | PermalinkReply |
|
Enjoys Math
Posted in reply to Enjoys Math
| 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.
|