Conversion to a C-style string could have been provided by an operator const char *() rather than c_str(). This would have provided the convenience of an implicit conversion at the cost of surprises in cases in which such a conversion was unexpected.--The C++ Programming Language -- Special Edition Bjarne Stroustrup.
So there you have it! The Framers were trying to protect you from youself. Just like Java! Rejoice and be glad in their thoughtfulness!
;-\ufffd
(For what it's worth, I don't like it either!)
So here's a suggestion: With all the wry (or rye) sarcasm you can muster, helpfully point out to the class the thoughtful parochialism of the Framers, and then suggest the creation of a derived sString class, (for smart String) that defines an overload of operator const char *(), and strongly suggest (read: demand) that this derived class be used in all your assignments. It would extend your class's understanding, and would give some useful metrics on how often (or whether) such parochialism was a hindrance as opposed to a help. (I suspect I know what these metrics will show, but real-world numbers trump my suspicions any day of the week and twice on Sunday!)