digitalmars.D.learn - Bypass the protection level
- Namespace (35/35) Mar 11 2015 Let's say we have these files:
- Namespace (1/1) Mar 11 2015 Could it be that this is intentional and has always worked?
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (4/9) Mar 11 2015 As far as I know, yes it's intended and again the same in C++.
- Namespace (2/15) Mar 11 2015 o.O nice to know. Thank you.
Let's say we have these files: ---- module Foo.Graphic.Drawable; interface Drawable { void draw(bool); } ---- ---- module Foo.Graphic.Sprite; import Foo.Graphic.Drawable; class Sprite : Drawable { protected: void draw(bool enable) { import core.stdc.stdio : printf; if (enable) printf("draw\n"); else printf("no drawing...\n"); } } ---- ---- module Foo.Window.Window; import Foo.Graphic.Drawable; class Window { void draw(Drawable d) { d.draw(true); } } ---- I can call draw on Drawable, because it is declared public and I cannot call draw on Sprite because it is declared protected (this is already a bit weird, why can I redeclare the interface method draw as protected?) but I can call the protected draw method from Sprite through Drawable. Is this intended?
Mar 11 2015
Could it be that this is intentional and has always worked?
Mar 11 2015
On 03/11/2015 04:40 AM, Namespace wrote:I can call draw on Drawable, because it is declared public and I cannot call draw on Sprite because it is declared protected (this is already a bit weird, why can I redeclare the interface method draw as protected?)It is the same in C++.but I can call the protected draw method from Sprite through Drawable. Is this intended?As far as I know, yes it's intended and again the same in C++. Ali
Mar 11 2015
On Wednesday, 11 March 2015 at 15:22:43 UTC, Ali Çehreli wrote:On 03/11/2015 04:40 AM, Namespace wrote:o.O nice to know. Thank you.I can call draw on Drawable, because it is declared publicand I cannotcall draw on Sprite because it is declared protected (this isalready abit weird, why can I redeclare the interface method draw asprotected?) It is the same in C++.but I can call the protected draw method from Sprite throughDrawable.Is this intended?As far as I know, yes it's intended and again the same in C++. Ali
Mar 11 2015