I can't quite find your problem, there's a lot of stuff there. However, I do have some comments.
Why is _answers a pointer? The single largest area of errors in C and C++ is in pointer management. Just avoid them when you can.
1 2 3 4 5 6
|
enum answers { CORRECT, INCORRECT };
struct Student {
//...
answers *_answers;
};
|
Similarly, Test::_answers is a pointer. There's no need for that. You have the same problem with Test::_questions. You really ought to use a collection of string for this, a vector, list or deque maybe? Actually, it seems the questions strings and answers enums go together. Why not put them in a struct together, then you can have a single collection of questions and answers.
Use a string class for strings. Again Student::_nameSurname is a character array. You really ought to use a string.
There's a common problem with error handling. Consider student_Recognize(). What happens when it cannot recognize a student? It returns an zero, which is not recognized an an error by its caller.
Similarly, in create_Login, you have exactly the same search, but this time you don't initialize the default, so anything can go wrong if it doesn't match.
I hope this helps.