2010-06-30 6 views
1

CString을 반환하여 변수에 배치하는 메서드가 있지만이 변수는 메서드의 매개 변수입니다. 변수에 메서드 반환을 할당하는 더 좋은 방법이 있습니까?메서드 복귀가 변수에 할당 됨

예 : 함수에 참조

CString foo = "foo"; 
foo = MakeBar(foo); 
+0

메서드 내부에 포인터를 전달하면 메서드가 실행을 마칠 때 포인터를 사용할 수 있습니다. 할당이 필요하지 않습니다. –

+0

아니요,'= '연산자를 사용하면 문제가 없습니다. 코드에 어떤 문제가 있습니까? – Philipp

+0

나는 그것을 사용하고있는 메소드에 동일한 변수를 할당하는 것이 필요하다고 생각한다. – shaun

답변

3

패스 foo에. 그런 식으로 입력/출력 매개 변수가 될 것입니다.

void MakeBar(CString &foo) 
{ 
    if(foo == "foo") 
    foo = "bar"; 
} 

//... 


CString foo = "foo"; 
MakeBar(foo); 
4

코드가 정상입니다. 인수를 수정하지 않는 함수를 작성하는 것은 흔한 일입니다. 귀하의 경우에는 foo을 덮어 쓰려고하므로 결과를 자체적으로 지정해야합니다.

이 관용구는 변경 될 수없는 문자열이있는 다른 언어에서 공통적으로 매우입니다.

+2

부작용이있는 것보다 훨씬 좋은 기능적 스타일입니다. –

0

귀하의 MakeBar() 기능이 일반적으로 으로 어떻게 사용되는지, 구현 방법은 무엇입니까? 만약 상당 부분이 foo2 = MakeBar(foo1)이라면 반환 값을 갖는 것이 좋습니다. MakeBar()의 출력이 항상 입력을 대체한다고 확신하면 void MakeBar(CString &foo) 형식이 더 좋습니다.

관련 문제