У меня есть класс ref в компоненте WinRT:
namespace WinRTComponent
{
public ref class Class1 sealed
{
public:
Class1();
void MyMethod(wchar_t* wcharPtr)
{
// Do nothing.
}
};
}
У меня также есть приложение Windows Store C++ XAML, в котором есть ссылка на компонент WinRT. В моем приложении я запускаю следующий код:
std::wstring str = L"Some text.";
const wchar_t* strPtr = str.data();
WinRTComponent::Class1^ class1 = ref new WinRTComponent::Class1();
wchar_t firstCharBefore = strPtr[0]; // It is 'S', correctly.
class1->MyMethod(const_cast<wchar_t*>(strPtr));
wchar_t firstCharAfter = strPtr[0]; // It is 0! Why?
Когда я передаю указатель wchar_t* публичному методу компонента WinRT, первый символ строки стирается и заменяется на 0.
Что является причиной этого? Это ожидаемое поведение или ошибка?