Listing 3: Second attempt at callbacks in C++

class PrintDialog {
   Widget okButton;
   Widget cancelButton;
   Widget printerList;

   char *printerName;

public:
    PrintDialog(Widget parent);

    static void okCallback(Widget,
                           XtPointer,
                           XtPointer);
};

PrintDialog::PrintDialog(Widget parent)
{
    ...
    okButton = XmCreatePushButton(parent,
                                  "OK",
                                  NULL,
                                  0);

    XtAddCallback(okButton,            // <-- This compiles
                  XmNactivateCallback,
                  okCallback,
                  NULL);
    ...
}

void PrintDialog::okCallback(Widget w, XtPointer user_data,
                             XtPointer call_data)
{
    cout << "Selected Printer: "
         << printerName << endl;     // <--- But this doesn't
}

int main()
{
    ...
    PrintDialog *pd = new PrintDialog(parent);
    ...
}
//End of File