On 04/14/2019 11:03 AM, Robert M. Münch wrote:
struct IM;
struct C {
  IM *impl;
};

int cInit(C* self);

class I {
     C handler;

     this(){cInit(&handler);}
}

Is there a simple way that I can use handler without the address-of operator and automatically get *impl?

Something like:

class I {
     C handler;

     this(){cInit(handler);}
}

And later can use I in a way like this without having to define/write explicit casts everywhere?

someFunc(C* self);

I myI;
someFunc(myI);



'alias this' can do that:

struct IM;
struct C {
 IM *impl;
};

int cInit(C* self) {
  return 0;
}

class I {
    C handler;

    this(){cInit(&handler);}

  C* ptr() {               // <== ADDED
    return &handler;
  }

  alias ptr this;          // <== ADDED
}

void someFunc(C* self) {
}

void main() {
  I myI = new I();
  someFunc(myI);
}

Ali

Reply via email to