On Fri, 11 Feb 2011 16:14:31 -0500, %u <[email protected]> wrote:

== Auszug aus Steven Schveighoffer ([email protected])'s Artikel


Thanks, but what about the following:

import std.stdio : writeln;

class a  {

        public this(int v) {
                myVar = v;
        }

        protected int myVar;

}

class b : a {

        private a[] moreInstances;

        this(int v, int[] vars...) {
                super(v);
                moreInstances ~= this;

                foreach(int cur; vars) {
                        moreInstances ~= new a(cur);
                }
        }

        int getVar() {
                return moreInstances[1].myVar;
        }

}

void main(string[] args) {
        b exp = new b(0, 1, 2);
        writeln(exp.getVar());
}

This compiles fine and prints the number 1. myVar is also protected
in class a, I also call myVar in the getVar()-method of class b.

Any code can access any members defined in the current module, regardless of access attributes (that rule is outlined in the link I sent, I just didn't quote that part). You have to split this into multiple modules to see the other rules take effect.

-Steve

Reply via email to