Um...The debugger would probably show you this very quickly!
Look at what you are doing:
if(brackObj.Matchc(next) == false || opening_brackets_stack.empty() == false)
What is the
type
of brackObj when you try to compare it with a close bracket?
Hint: think about when you create each new instance of a Bracket. Are they all brackets? Are they all open brackets?