The reason for your error is that your parentheses are in the wrong places. The & that the compiler complains about is outside the conditional expression of the if statement.
The compiler sees this as the condition to be tested:
if(isalpha(checkcode.at(0)))
The remaining part is considered the statement to execute when the condition is true:
&(isalpha(checkcode.at(1)))...
Thus, the compiler is correct. When it sees a unary & operator, it expects the operand to be something that it can take the address of, such as an lvalue or a function.
Careful reading of error messages and code will help you find this kind of error next time. (That is, when the compiler complains about a missing "lvalue or function designator," ask yourself what would make it expect such a thing in the first place. It wants those when it's taking the address of something, so consider why it thinks it should be taking the address of anything. It does that with a unary & operator, but you intended to have a binary operator, so look closely at the code to determine why it's not interpreted as a binary operator. You know C++ syntax, so you know that if statements need to be entirely surrounded in parentheses, and so you know that only the first expression is part of the condition. That's not what you intended, so you'll realize that the closing parenthesis is in the wrong place.)
As it is, the single-ampersand & operator isn't what you should use for Boolean expressions. You should use && instead. That difference would not lead to the error you saw, and it would have no discernible effect on the run-time behavior of your code, either.
&¬&?