Vap*_*olf 2 visual-c++ windows-runtime c++-cx
我在这里错过了什么?我认为^是一个智能指针,我可以通过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
}
Run Code Online (Sandbox Code Playgroud)
A T^类似于指针类型; 当你有一个带T^参数的函数(比如你的GetStrings静态成员函数)时,hat会按值传递,就像一个指针按值传递一样.
如果你想String^通过引用传递,你需要使用引用:
void MyClass::GetStrings(String^& str1, String^& str2)
Run Code Online (Sandbox Code Playgroud)
请注意,引用是C++语言功能,不属于Windows运行时类型系统.Windows运行时类型系统也不支持通过引用参数输入/输出; 仅支持out参数.
因此,如果MyClass是公共Windows运行时引用类型并且GetStrings是公共或受保护的成员函数(基本上,如果MyClass::GetStrings出现在元数据中并且可以跨Windows运行时ABI调用),则需要使用指针:
void MyClass::GetStrings(String^* str1, String^* str2)
Run Code Online (Sandbox Code Playgroud)
这些指针是out参数:你可以写入指向String^s但你无法读取它们.
| 归档时间: |
|
| 查看次数: |
2594 次 |
| 最近记录: |