Premettendo che non so una cippa di c++ (avendo studiato solo il c)

codice:
int BOX::get_carattere()
{
   return carattere;
}
Non dovrebbe ritornare un char? Se il c++ lavora come il c, facendo ritornare un int tu lo stai castando implicitamente ed è normale che ti ritrovi il valore decimale corrispettivo al carattere.

Se ho detto una cagata, chiedo venia.