我正在尝试通过引用更改变量值(使用函数)。
我的功能:
void chgVariable(String^ *trgvari,String^ trgvarival)
{
*trgvari = trgvarival;
}
我的变量:
String^ myStringVar;
我如何使用:
chgVariable(&myStringVar, gcnew String("Test"));
但是我收到了这个错误:
无法将参数1从'cli :: interior_ptr'转换为'String ^ *'
答案 0 :(得分:0)
您对第一个参数的定义有误。它应该是:
void chgVariable(String* ^trgvari,String^ trgvarival)
如果您从String^ myStringVar
开始,则&myStringVar
会成为String^
的指针,显示为String*^
。
此外,现在当你取消引用它时,你应该得到String^
,就像你想要的那样。
修改强>
不幸的是,C ++ CLI不允许指向句柄的指针,所以你应该把它作为对句柄的引用,如下所示:
void chgVariable(String^% trgvari,String^ trgvarival)
并将&myStringVar
更改为myStringVar
。
对此另一个stackoverflow问题很有信心:Pass an argument by reference in C++/CLI so re-assignment affects the caller