I really like to put enums in a namespace and even moreso if you use a name like 'x' in it that could be locally overwritten... this is a recipe for frustration without the namespace.
if this is tictactoe this is really messed up. eg if you had an x in one corner, you wouldnt print a board with 9 xs. you only print 1 x, for that location.
well, let me preach on it lol.
if this is indeed tic-tac-toe, that board has 9 locations, not 8. so that is bug #1.
now, second thing, c++ enums have a flaw ... you can't print the enum's NAME value directly (that only exists in the CODE).
so you need to help it. Here is a simple help for your situation.
third, you need to loop to print the board.
putting all that together, and giving some code snippets to serve only as examples:
int board[9]{};
char letterz[] = "-XO"; //dash is empty, you could use space or whatever here?
...//blah blah
you can do it in a single loop but its harder to understand so I left it in double loop form. Ideally you would do it in the single for efficiency, but lets get it working first.
The point is that you need to print a value of (blank, x, o) for each board location, not hard-coded constants (as you do currently) when printing the board. And because you can't print enums (they are integers) by name, you have to do a lookup table to what the name is to relate the enum value back to the board's stored value. (this is a poor design, by the way, lose the enum and make board an array of character would eliminate a lot of complexity here). If the board were char, you could just set it to 'x' or 'o' or '-' directly, see?