*((char*)value): c'è un * in più, dovrebbe essere:
(char*)value
In quanto in C/C++ le stringhe sono date da un indirizzo di memoria che punta al primo byte di un segmento di memoria sequenziale.
Con il tuo codice individui appunto questo byte che poi è il primo carattere...
Prova a vedere se così funziona, premetto che non ho controllato tutto il codice ma ho solo dato un'occhiata...

Rispondi quotando