Joke Errors:

WCOMPREND: The spelling, grammar, or terminology of your signal has fallen to the point that it severely degrades MaulingMonkey's ability to comprehend it. Failure to improve the signal quality may result in being misinterpreted, any resulting damages cannot be held as the responsibilty of MaulingMonkey (c)(tm)(Inc.).
ECOMPREND: The spelling, grammar, or terminology of your signal has fallen to the point that it terminally degrades MaulingMonkey's ability to comprehend it. Failure to improve the signal quality may result in being clarity of your posts has fallen beyond my ability to comprend it.

These are typically caused by a missing #include <string>. Other headers you've included provide the declaration for std::string (allowing you to create references to them without error), but not the definition of std::string and it's operators (hence your compiler's confusion). Including the header will provide all the missing definitions.