Issue with 2.071: Regression or valid error?

Craig Dillabaugh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 6 12:01:58 PDT 2016


On Wednesday, 6 April 2016 at 15:10:45 UTC, Andre wrote:
> Hi,
>
> With 2.071 following coding does not compile anymore and 
> somehow I feel it should compile.
> The issue is with line "cat.create();".
> Cat is a sub type of Animal. Animal "owns" method create and I 
> want to call the method
> create within the class Animal for cat.
>
> Is the error message "no property create for type 'b.cat'" 
> valid or not?
>
> Kind regards
> André
>
> module a;
> import b;
>
> class Animal
> {
> 	private void create() {}
> 	
> 	void foo(Cat cat)
> 	{
> 		cat.create(); // >> no property create for type 'b.cat'
> 	}
> }
>
> void main() {}
>
> --------------
>
> module b;
> import a;
>
> class Cat: Animal {};
>
> compile with
>>> rdmd a b

Not so up to date on D's OOP stuff, but don't you want create() 
to be protected, not private.  You can typically access a private 
method through a base class, which is what you are doing with 
cat.create().


More information about the Digitalmars-d-learn mailing list