2009-10-06 5 views
1

이 두 함수를 결합해야합니다. 와 그렇게 도움이 필요합니다C++에서 두 함수 결합하기

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
     {  
      return Position(render, pos); 
     } 
} 



int Position(GzRender *render, GzCoord vertexList[3]) 
    { 
    GzCoord *pv[3]; 
    int i,j; 
    pv[0] = &vertexList[0]; 
pv[1] = &vertexList[1]; 
pv[2] = &vertexList[2];   

    //more function code in here 
    } 

이 사람이 나에게 도움이 될 수 있습니다.

감사

+0

진짜 질문이 아닙니까? 인용 필요. –

+0

휴관일? 숙제라고 생각하기 때문에? –

+1

초심자 질문입니다. 그 사람들은 싫어할지도 모릅니다. 그러나 그것은 진짜 질문입니다. 종결을위한 좋은 이유가 아닙니다. –

답변

3

일반적으로 기능을 분리하는 것이 더 나은,보다 일반적인 관행 (리팩토링 동안 주요 작업 중 하나)입니다. 말했다되고, 당신이 단순히 수행하여 "결합"할 수 있습니다

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
    {  
     //function code in here, working on "pos" instead of vertexList 

     // return value 
    } 
    // return some other value here? 
} 
+0

두 번째 기능 위치()에서 몇 가지 변경 사항을 추가했습니다. 내가 말한대로 할 때 "vertexList ': undeclared identifier"오류가 발생합니다. –

+0

그 이유는 제가 언급했기 때문입니다. 이전에 pos를 전달 했으므로 "vertexList"를 "pos"로 대체해야합니다. –

+0

고맙습니다. 그것은 작동합니다. –

1

첫 번째 포스터 (리드 Copsey는) 사실에 대한 정확이 기능이 분리 유지하기 위해 일반적으로 더 나은 것을.

inline 지시어를 사용해 보셨습니까?

http://www.codersource.net/cpp_tutorial_inline_functions.html

는 기술적으로 그것은 단지 '컴파일러 힌트'입니다하지만 당신은 그것을 시도 할 수 있습니다. 그것이하는 일은 컴파일러에게 인라인으로 표시된 메소드의 본문을 호출하는 다른 메소드에 포함 시키려고한다는 것입니다. 유지 관리 관점에서 볼 때 더 좋으며 '잘라 붙이기'코딩의 두통없이 목표를 달성해야합니다.

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
     {  
      return Position(render, pos); 
     } 
} 



inline int Position(GzRender *render, GzCoord vertexList[3]) 
{ 
     //function code in here 
} 
+0

두 번째 기능 위치()에서 몇 가지 변경 사항을 추가했습니다. 내가 한 말대로, "vertexList ': 선언되지 않은 식별자" –

0

컴파일하지 않을 경우 뒤집습니다. "삼각형"앞에 "Position"넣기