On 2015-09-16 10:49, FiveNights wrote:
Every so often I'll get a compiler error that isn't particularly clear
on what's wrong and eventually I'll figure out that what's causing it is
having a function in an abstract class somewhere that isn't defined:

abstract class SomeClass {
     int someVariable;
     void someFunction();
}
the solution is usually:
void someFunction(){}

Usually the abstract class is a converted interface, but it turned out
that I needed to include a variable for it to work out and I just wasn't
keen on remembering to put a mixin in each derived class.

I'm just wondering why I can't have an undefined function in an abstract
class? I'd the compiler to say, "Hey, you forgot to put 'someFunction()'
in 'SomeDerrivedClass', go do something about that." when I end a
function with a semi-colon in the base class and don't have it in the
derrived. Everything just seems to break in cryptic ways unless I curly
brace the function ending.

I'm guessing you see a link error. The reason you see that instead of a compile error is because D supports separate compilation. Meaning that the method could be implemented in a different library that are resolved during link time.

As already answered in another post, the solution is to prefix the method declaration with "abstract".

--
/Jacob Carlborg

Reply via email to