structs are there in C++ for backwards compatibility.
Enums are there to help you with constants and a new( but rather old) technique to help in metaprogramming.
But lets go back to the constants thing. Which would you prefer?
struct{
enum Direction{ EAST, SOUTH, WEST, NORTH }
//...
};
//or
struct{
const int EAST = 0;
const int SOUTH = 1;
const int WEST = 2;
const int NORTH = 3;
};
IMO, the enum version is better because not only is the enum more descriptive because of the name you can give it( Direction in the above case ), but it keeps count for you.