Winforms 通过参考c改变变量值++/windows窗体

Winforms 通过参考c改变变量值++/windows窗体,winforms,c++-cli,Winforms,C++ Cli,我试图通过引用(使用函数)更改变量值 我的职能: void chgVariable(String^ *trgvari,String^ trgvarival) { *trgvari = trgvarival; } 我的变量: String^ myStringVar; 如何使用: chgVariable(&myStringVar, gcnew String("Test")); 但我得到了这个错误: 无法将参数1从“cli::interior_ptr”转换为“String^*”第一个参

我试图通过引用(使用函数)更改变量值

我的职能:

void chgVariable(String^ *trgvari,String^ trgvarival)
{
 *trgvari = trgvarival;
}
我的变量:

String^ myStringVar;
如何使用:

chgVariable(&myStringVar, gcnew String("Test"));
但我得到了这个错误:


无法将参数1从“cli::interior_ptr”转换为“String^*”

第一个参数的定义错误。应该是:

void chgVariable(String* ^trgvari,String^ trgvarival)
如果以
String^myStringVar
开头,则
&myStringVar
将成为指向
String^
的指针,该指针显示为
String*^

另外,现在当您解除对它的引用时,您应该得到您想要的
String^

编辑:

不幸的是,C++CLI不允许指向句柄的指针,因此您应该将其作为句柄的引用,如下所示:

void chgVariable(String^% trgvari,String^ trgvarival)
并将
&myStringVar
更改为仅
myStringVar


对这个其他堆栈溢出问题的大量信任:

您是否尝试过使<代码> TrgVARI参数成为一个适当的C++引用而不是指向一个C++ CLI指针的指针?例如,将其声明为
String^&trgvari
,然后在调用函数时传递它而不带运算符地址。相同错误。我正在“创建”private region private中的变量:System::ComponentModel::Container^components;字符串^myStringVar;有问题吗?您需要使用托管引用:void chgVariable(String^%trgvari,String^trgvarival)现在我遇到了以下错误:“不允许使用指向C++/CLI ref类或接口类的普通指针”Gah,这就是我不喜欢C++CLI的原因:)。尝试将其设置为
String^^trgvari
,并且
%myStringVar
当我在函数内部创建变量时,这会起作用,但当我在函数外部创建变量时,则不会起作用。好吧,我查看了更多的内容,并更新了我的答案。当我使用“String^^trgvari”时,会出现以下错误:“句柄到句柄,指针,或不允许引用'