Why do 'abstract' methods with 'in' or 'out' contracts require a body?
    via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sat Sep 13 00:32:22 PDT 2014
    
    
  
On Saturday, 13 September 2014 at 05:07:32 UTC, Trey Brisbane 
wrote:
> Hey all,
>
> I have a class method defined like so:
>
> abstract class MyClass {
> public:
> 	@property
> 	abstract SomeClassType getField() pure nothrow
> 	out(result) {
> 		assert(result !is null, "Error: getField() returned null.");
> 	}
> }
>
> As you can see, this method is abstract, as well as in an 
> abstract class. Why, then, do I get the following error when 
> compiling it?
>
> "Error: function module.MyClass.getField in and out contracts 
> require function body"
>
> Is this a compiler bug, or is there a reason for this?
>
> Thanks for your time!
I thought it was an error, but then I found this in the 
documentation:
http://dlang.org/attribute.html#abstract
"Functions declared as abstract can still have function bodies. 
This is so that even though they must be overridden, they can 
still provide ‘base class functionality.’"
=> it's intentional
    
    
More information about the Digitalmars-d-learn
mailing list