gpt4 book ai didi

visual-c++ - VC++ 通过 ref 传递 Platform::String^

转载 作者:行者123 更新时间:2023-12-04 04:25:17 27 4
gpt4 key购买 nike

我在这里想念什么?我认为 ^ 是一个智能指针,我可以通过 ref 将字符串传递给函数。其他帽子对象呢?

// calling code
MyClass::GetString(_str1, _str2);
// both strings are nullptr at this point

/* static */
MyClass::GetStrings(String^ str1, String^ str2)
{
// Read from Local Settings
auto value = localSettings->Values->Lookup(kKey);
String^ temp = ref new String(value->ToString()->Data());
str1 = temp;

// same for str2
}

最佳答案

一个 T^类似于指针类型;当你有一个带有 T^ 的函数时参数(如您的 GetStrings 静态成员函数),帽子是按值传递的,就像指针按值传递一样。

如果你想要 String^的通过引用传递,你需要使用引用:

void MyClass::GetStrings(String^& str1, String^& str2)

请注意,引用是 C++ 语言功能,不是 Windows 运行时类型系统的一部分。 Windows 运行时类型系统也不支持通过引用参数输入/输出;仅支持输出参数。

因此,如果 MyClass是公共(public) Windows 运行时引用类型和 GetStrings是公共(public)或 protected 成员函数(基本上,如果 MyClass::GetStrings 出现在元数据中并且可以跨 Windows 运行时 ABI 调用),则需要使用指针:
void MyClass::GetStrings(String^* str1, String^* str2)

这些指针是输出参数:您可以写入指向的 String^ s 但您无法从中读取。

关于visual-c++ - VC++ 通过 ref 传递 Platform::String^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com