2013-08-09 2 views
0

참조 (함수 포함)로 변수 값을 변경하려고합니다.참조로 변수 값 변경 C++/windows 양식

내 기능 :

void chgVariable(String^ *trgvari,String^ trgvarival) 
{ 
*trgvari = trgvarival; 
} 

내 변수 :

String^ myStringVar; 

나는 어떻게 사용합니까 :

이 매개 변수를 1 변환 할 수 없습니다 :

chgVariable(&myStringVar, gcnew String("Test")); 

하지만 난이 오류가 cli :: inter에서 ior_ptr 'to'String^* '

+0

당신이'trgvari' 인수 "포인터"는 C++ CLI에 적절한 C++ 참조 대신 포인터를 만드는 시도? 예 : 그것을'String^& trgvari'로 선언하고 함수를 호출 할 때 주소 연산자를 사용하지 않고 전달하십시오. –

+0

같은 오류가 발생했습니다. "개인 영역"에 변수를 "생성 중" private : System :: ComponentModel :: Container^components; String^myStringVar; 문제가 있습니까? – user2667906

+0

당신은 관리 참조를 사용해야합니다 : void chgVariable (String^% trgvari, String^trgvarival) –

답변

0

첫 번째 인수의 정의가 잘못되었습니다. 그것은해야한다 : 당신이 String^ myStringVar로 시작하는 경우

void chgVariable(String* ^trgvari,String^ trgvarival) 

&myStringVarString*^로 표시되는 String^에 대한 포인터가된다.

또한 지금 참조를 취소하면 원하는대로 String^이 표시됩니다.

편집 :

불행히도, C++ CLI는 핸들에 대한 포인터를 허용하지 않기 때문에 당신이 그것을과 같이 핸들에 대한 참조해야한다 :

void chgVariable(String^% trgvari,String^ trgvarival) 

과에 &myStringVar 변경 단지 myStringVar. 이 다른 유래 질문에 대한 신용

많은 : Pass an argument by reference in C++/CLI so re-assignment affects the caller

+0

이제 'C++/CLI 참조 클래스 또는 인터페이스 클래스에 대한 일반 포인터가 허용되지 않습니다'라는 오류가 발생합니다. – user2667906

+0

Gah , 이것은 내가 C++ CLI를 좋아하지 않는 이유입니다. :) 대신에'String ^^ trgvari'을 만들고, % myStringVar' – Omada

+0

'핸들, 포인터 또는 참조를 처리 할 수 ​​없습니다'라고 쓰십시오 : ( – user2667906