Поскольку этот оператор является функцией const
, this
и все его члены (m_p
) должны быть константными.Таким образом, тип m_p
равен const char[8]
.Он не может быть неявно преобразован в char*
, поскольку const
-ness будет потеряна.Преобразование в const char*
в порядке.
Вы можете либо заставить его вернуть const char*
inline operator const char *() const { return m_p; }
, либо удалить квалификатор const
inline operator char *() { return m_p; }
илипредоставить оба метода.
Цифровой Марс здесь не так.Или, может быть, вам нужно включить некоторые предупреждения.