Listing 2: A first attempt at moving to C++

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

   char *printerName;

public:
    PrintDialog(Widget parent);
    void okCallback(Widget,
                    XtPointer,
                    XtPointer);
};

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

    XtAddCallback(okButton,           // <-- This will not compile
                  XmNactivateCallback,
                  okCallback,
                  NULL);
    ...
}

void PrintDialog::okCallback(Widget w,
                             XtPointer user_data,
                             XtPointer call_data)
{
    cout << "Selected Printer: " << printerName << endl;
}

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