bstnode(node);
bstnode(*node2);
bstnode(*node3);
Same problem as in your last question. These are not definitions of nodes and your compiler tells you that they are syntactically wring. Use instead:
bstnode node;
bstnode node2;
bstnode node3;
Then again the same problem as in your last post: Your set_right function takes a pointer as parameter, not the node itself, so use:
node.set_right (&node2);
node2.set_right (&node3);
I suggest you stop experimenting around this way. It will be very time consuming to learn the basics of C++ by playing around. Get a good book on C++ or take one of the many online tutorials and try a step-by-step approach. That will save you a lot of time.