class CReport
{
int iLinesPerPage;
int iLinesLeft;
int iTitleLines;
int iFooterLines;
int iPageCount;
// Function pointers for the title and footer functions
void (*vTitlePrint)(ostream &, void *, int);
void (*vFooterPrint)(ostream &, void *, int);
// Data for the title and footer functions
void *vTitleData;
void *vFooterData;
ostream *RepStream;
public:
CReport(void _vTitlePrint(ostream &, void *, int),
int _iTitleLines,
void _vFooterPrint(ostream &, void *, int),
int _iFooterLines, ostream *_RepStream,
int _iLinesPerPage);
void
vPrintLine(void _vLinePrint(ostream &,void *), int _iLines,
void *_vTitleData, void *_vData, void *_vFooterData);
void vNewPage();
void vPrintBlankLines(int _iLines);
// vPrintFooter is overloaded to provide for the case where
// there is no data for the report. It will print the title,
// a NO DATA Message, and a blank footer
void vPrintFooter();
void vPrintFooter(void *_vTitleData, void *_vFooterData);
...
};