Any reason why they have to be CStdString objects? Personally I prefer std::string wherever possible (will also save you the StdString.h include) and you're using std::string almost everywhere in the implementation anyways.