我在 WinRT 组件中有一个 ref 类:
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。
这是什么原因?这是预期的行为还是错误?