> because another guy is andivising me to do so

Um, ok, but why did you change the function? Don't change stuff just because someone tells you to; change it for a good reason and to fix a specific problem. The original version of print_reverse() looked just fine to me. But what didn't it do, that meant you had to change it?

As for "st undefined", that's probably because you have defined print_reverse() as a global function rather than as a member function of class stack.

When you call print_reverse, obviously this is going to depend on how you've written it, but you call it with MAX_ITEMS-1, i.e. 9. But if, say, only st[0] .. st[3] are defined, you're going to print junk for the first six elements. If st[0]..st[3] are defined, then surely print_reverse will display st[3], st[2], st[1], st[0], correct? If print_reverse isn't going to recurse, then I'd suggest it shouldn't take an argument.