I don't have any c++ experience (not counting nwscript [img]smile.gif[/img] ) but what I often do when I get an error I don't get is use google with the exact code of the error, except for my own constants or declarations.
When I did that with your code I got to
this site, under the 'C++ has scary error messages' it looks like a similar error to the one you have. Also the description of the error is good looking at the error message you've got.
BTW and this is purely a guess at it cause as I said I don't know much about c++ but those 2 declarations look so similar I doubt they do much different things. Again I don't know about c++ but other languages have convert functions maybe you could try those (if they're in c++ of course), cause right now it looks like you're trying to declare a char* as string (also from the msg) which IMHO doesn't look very if that's possible so easy.
Why I think the other piece of code works. It looks like that piece is adding characters to a string, instead of immediately equalling a string to a char*?