Listing 2 A "typical" class for a binary tree with the tree node class as a forward-declared private nested type

class tree
   {
public:
   tree();
   ...
private:
   struct node;
   node *root;
   };

struct tree::node
   {
   node *left, *right;
   ...
   };