digitalmars.D.learn - protected + package attributes
- zodd (7/7) Jul 11 2016 Suppose I have a class with a few protected functions. I want to
- ag0aep6g (6/13) Jul 11 2016 Can have only one level of protection. If package is too restrictive
- Mike Parker (5/7) Jul 11 2016 This is a pattern I have found useful, particularly when dealing
- zodd (2/22) Jul 11 2016 It seems that I have no other choice. Thanks for a suggestion!
Suppose I have a class with a few protected functions. I want to let another class from the same package call these functions. Thus I've added a "package" attribute and got the following: Error: conflicting protection attribute 'package' and 'protected' How can I achieve what I want? These member functions must be protected, I can't make them private because this is a base class intended for inheritance.
Jul 11 2016
On 07/11/2016 02:28 PM, zodd wrote:Suppose I have a class with a few protected functions. I want to let another class from the same package call these functions. Thus I've added a "package" attribute and got the following: Error: conflicting protection attribute 'package' and 'protected' How can I achieve what I want? These member functions must be protected, I can't make them private because this is a base class intended for inheritance.Can have only one level of protection. If package is too restrictive with regards to overriding, and protected is too restrictive with regards to calling, then there's only public left. Other than that, you could add a `package` method with a different name that just calls the `protected` one.
Jul 11 2016
On Monday, 11 July 2016 at 12:42:57 UTC, ag0aep6g wrote:Other than that, you could add a `package` method with a different name that just calls the `protected` one.This is a pattern I have found useful, particularly when dealing with protected abstract methods, e.g. package void someActon() { doSomeAction(); } protected abstract void doSomeAction;
Jul 11 2016
On Monday, 11 July 2016 at 12:42:57 UTC, ag0aep6g wrote:On 07/11/2016 02:28 PM, zodd wrote:It seems that I have no other choice. Thanks for a suggestion!Suppose I have a class with a few protected functions. I want to let another class from the same package call these functions. Thus I've added a "package" attribute and got the following: Error: conflicting protection attribute 'package' and 'protected' How can I achieve what I want? These member functions must be protected, I can't make them private because this is a base class intended for inheritance.Can have only one level of protection. If package is too restrictive with regards to overriding, and protected is too restrictive with regards to calling, then there's only public left. Other than that, you could add a `package` method with a different name that just calls the `protected` one.
Jul 11 2016