帮助在C ++中组合两个函数

时间:2009-10-06 16:51:43

标签: 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
   }

任何人都可以帮助我。

此致

3 个答案:

答案 0 :(得分: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?
}

答案 1 :(得分:1)

第一张海报(Reed Copsey)对于保持功能分离通常更好的事实是正确的。

您是否考虑过使用inline指令?

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

从技术上讲,它只是一个'编译器提示',但你可以尝试一下。它的作用是告诉编译器您希望在调用它的任何其他方法中包含表示为inline的方法体。从维护的角度来看,它更好,并且应该实现您的目标,而不会出现“剪切和粘贴”编码的麻烦。

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
}

答案 2 :(得分:0)

如果没有编译,请翻转它们。把"位置"在" Triangle"

之前