Below are the changes I made.
Code:
#include <iostream>
class cl
{
int a, b, c;
static int cntr;
public:
cl( int j, int k, int l )
{
a = j; b = k; c = l; cntr++;
std::cout << "Object " << cntr << '\n';
}
~cl() { std::cout << "Object " << cntr-- << " destroyed.\n"; }
int get_a () { return a; }
int get_b () { return b; }
int get_c () { return c; }
friend class c2;
};
class c2
{
public:
void prn( cl **obj )
{
std::cout << "Using class cl access function\n\n";
for( int i = 0; i < 3; i++ ) {
std::cout << obj[i]->get_a() << ", ";
std::cout << obj[i]->get_b() << ", ";
std::cout << obj[i]->get_c() << ",\t";
} // end for
std::cout << "\n\n";
} // end prn
void runShow( cl **ob ) //added * so it would take pointer to pointers
{
prn( ob ); //remove & reference
} // end show
}; // end c2
int cl::cntr = 0; // initialize counter
int main() {
cl* ob[3] = { //added * for array of pointers of cl
&cl(1, 4, 7), // added reference to take address of
&cl(2, 5, 8),
&cl(3, 6, 9)
}; // initializer
c2 m; // create friend object
m.runShow( ob );
return 0;
} // end