Строковые операторы неявного преобразования в const char * / wchar_t * - PullRequest
5 голосов
/ 18 января 2012

Я считаю класс MFC / ATL CString очень удобным в коде Win32 C ++; в частности, мне показалось удобным тот факт, что мы можем напрямую передавать экземпляры CString в параметры LPCWSTR (т.е. const wchar_t *) API Win32 благодаря неявному оператору преобразования, определенному CString.

Вместо этого при использовании std::wstring требуется явный вызов метода .c_str().

Итак, почему классы строк STL (std::string и std::wstring) требуют явного вызова метода (c_str()) вместо определения неявного оператора преобразования const char* / const wchar_t *?

Есть ли серьезные подводные камни, скрытые с помощью операторов неявного преобразования?

1 Ответ

2 голосов
/ 18 января 2012

Каковы бы ни были теоретические проблемы, я только отмечу, что за годы работы с CString меня никогда не укусила эта функция.Удобство намного перевешивает опасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...