Being more of a pure C guy, I had forgotten about bitset. That will make your life easier.
Just to make sure I and everyone understand then:
Code:
bitset<15> bits; // holds the symbol type
Small problem: this is a set of 15 bits, indexed 0-14. You want a set of 16 bits, indexed 0-15. Now what is the purpose here:
Code:
bits[0];
bits[1];
bits[2];
...etc.
You don't have to do that, the bits are initialized to zero (not sure what your purpose is...)
Anyway, so I am guessing by "holds the symbol type" you mean this indicates whether this position has an X or an O. Which doesn't deal with empty, so:
Code:
bitset<15> bp; // holds board position
Is the purpose of that (again, it should be 16) to indicate whether a square is occupied or not?