il problema è che in C++ o in C quando si scrive qualche stringa fra le "" il tipo di dato sarà um char*, in altri linguaggio come il Java o il D la classe string è un tipo incapsulato, quindi è possibile fare cose come queste "ciao".lenght() ad esempio o "ciao" + "a tutti".
Quindi nel tuo codice, quello che non funziona, praticamente hai questo:

codice:
stringa = char* + char + char*
come puoi vedere l'operatore + viene applicato a tipi primitivi che non sovraccaricano l'operatore +, se, come hai giustamente fatto, casti implicitamente un char in un string ottiene questa "formula"

codice:
string = char* + stringa + char*
la seconda stringa sovraccaricando + permette di concatenarli, quindi se nell'espressione dalla parte destra non c'è nessun oggetto string che sovraccarica l'operatore non puoi farci niente.