Yeah, I also thought about inheritance. But I can't understand one. For example I subclass a QWidget in my C++ part of wrapper:<br><pre style="margin-top: 0pt; display: inline;">class QWidget_Proxy: public QWidget<br>{<br>
   Q_OBJECT<br>   public:<br>      QWidget_Proxy(QWidget* parent = 0);<br><br>      void ancestor_mousePressEvent(QMouseEvent* qme);<br>      virtual void mousePressEvent(QMouseEvent* qme);<br>}<br><br>void QWidget_Proxy::QWidget_Proxy(QWidget* parent)<br>
{<br><br>}<br><br>//default implementation<br>void QWidget_Proxy::ancestor_mousePressEvent(QMouseEvent* qme)<br>{<br>   QWidget::mousePressEvent(qme);<br>}<br><br>void QWidget_Proxy::mousePressEvent(QMouseEvent* qme)<br>{<br>
   Dispatch_QWidget_MousePressEvent(this, qme);<br>}</pre><br><br>extern "C" void QWidget_mousePressEvent(Qwidget* qwidget, QMouseEvent qme)<br>{<br>     qwidget.ancestor_mousePressEvent(QMouseEvent* qme)<br>}<br>
<br><br>And my D wrapper<br>class QWidget : QObject<br>{<br><pre style="margin-top: 0pt; display: inline;">   </pre>
private void* qwidgetPtr;<br>     <br>     //constructor of D class<br>     this()<br>     {<br>          qwidgetPtr = QWidget_new();<br>     }<br><br>     static extern (C) void Dispatch_QWidget_MousePressEvent(void* classPtr, QMouseEvent *qme);<br>
     {<br>          classPtr.mousePressEvent(qme);<br>     }<br>     <br>     void mousePressEvent(QMouseEvent qme)<br>     {<br>          QWidget_mousePressEvent(this.qwidgetPtr,qme)<br>     }<br>}<br><br>Okey and I have the QPushButton which inherirts from QWidget (not directly but it doesn't matter). C++ wrapper:<br>
<br>extern "C" void* QPushButton_new()<br>{<br>    return new QPushButton_proxy();<br>}<br><br>D wrapper:<br>class QPushButton : QWidget<br>{<br><pre style="margin-top: 0pt; display: inline;">   </pre>
private void* qpushbuttonPtr;<br>     <br>
     //constructor of D class<br>
     this()<br>
     {<br>
          qpushbuttonPtr = QPushButton_new();<br>
     }<br>
}<br><br>This is not 100% accurate - but the rough idea is that QPushButton_proxy is inherited from QPushButton and QPushButton in its turn is inherited from QWidget, not from QWidget_proxy. so when we create an instance of QPushButton - all this virtual functions will not be implemented, because they are implemented only in QWidget_proxy - and nothing is derived from this class.<br>