Конструкторы CstringT
, которые принимают char
или wchar_t
, explicit
. См. docs .
Спецификатор explicit
в C ++ означает, что компилятору не разрешено выполнять неявное преобразование параметра (ов). См. Также явный спецификатор .
Таким образом, компилятор не может (не может) неявно преобразовывать значение int
в char
или wchar_t
.
(Обратите внимание, что это зависит от установленного флага _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
. Без установленного флага конструкторы не являются явными, но тогда не ясно, какой конструктор выбрать.)
Так что вам нужноявное приведение параметра к char
или wchar_t
, в зависимости от того, что вы хотите:
CStringA str = CStringA(static_cast<char>('A' + 5));
или:
CStringW str = CStringW(static_cast<wchar_t>(L'A' + 5));