Is it a bug that a parent class that access its own private members from derived classes gets deprecation warning?

bauss jj_1337 at live.dk
Sun Apr 8 19:33:15 UTC 2018


On Sunday, 8 April 2018 at 14:45:34 UTC, kdevel wrote:
> On Sunday, 8 April 2018 at 13:00:02 UTC, bauss wrote:
>
> [...]
>
>> // a.d
>> module a;
>>
>> class Foo
>> {
>> 	private:
>> 	bool _baz;
>> 	
>> 	public:
>> 	void handleBar(T : Foo)(T[] foos)
>> 	{
>> 		foreach (child; foos)
>> 		{
>> 			child._baz = true; // Not ok.
>
> replace this line with
>
>    import std.stdio;
>    __PRETTY_FUNCTION__.writeln;
>    foos.writeln;
>
> This writelns:
>
>    void a.Foo.handleBar!(Bar).handleBar(Bar[] foos)
>    [b.Bar, b.Bar]
>
> So foos is actually an array of Bars. And there is no access 
> from a Bar to the private elements of it's baseclass Foo.

Yes, but we're in the module a and private is module level, so it 
should be accessible from the function regardless of whether it's 
Bar or not.



More information about the Digitalmars-d mailing list