#include <iostream>
#include "printme.h"
#include "printme2.h"
#include "printmult.h"
#include "printmult2.h"
using namespace std;
void do_print1(PrintMe &pm)
{
cout << "a by reference: ";
pm.print();
cout << endl;
}
void do_print2(PrintMe pm)
{
cout << "a by copy: ";
pm.print();
cout << endl;
}
void do_print3(PrintMe *pm)
{
cout << "a by pointer: ";
pm->print();
cout << endl;
}
void do_print1(PrintMe2 &pm)
{
cout << "b by reference: ";
pm.print();
cout << endl;
}
void do_print2(PrintMe2 pm)
{
cout << "b by copy: ";
pm.print();
cout << endl;
}
void do_print3(PrintMe2 *pm)
{
cout << "b by pointer: ";
pm->print();
cout << endl;
}
main()
{
PrintMeLots a(3, 3);
PrintMeLots2 b(2, 2);
/* Just show all the combinations. */
cout << "a direct: "; a.print(); cout << endl;
do_print1(a);
do_print2(a);
do_print3(&a);
cout << "\nb direct: "; b.print(); cout << endl;
do_print1(b);
do_print2(b);
do_print3(&b);
}