For these kind of things a 'friend' declaration coupled with private
would also work, if we could combine it with objects of type A being
allowed to access private methods in other objects of type A it would
be a plus. :-)


  class A {
    friend A create_a(); // types here not really needed in pike, though.
    protected int x;
    protected void init (int i) {x = i;}
    int get() {return x;}
  }

  class B {
    friend A create_a(); // types here not really needed in pike, though.
    protected int x;
    protected void init (string s) {x = (int) s;}
    int get() {return x;}
  }

  A create_a() {
    B b = B();
    b->init ("17");
    return b; // And all is well, since the types match.
  }

Reply via email to