2009-10-06 61 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

不是一个真正的问题吗?需要引用。 – 2009-10-06 17:07:30

+0

已关闭?因为你认为这是一项家庭作业? – 2009-10-06 17:08:29

+1

这是一个初学者问题,这些人可能不喜欢。但这是一个真正的问题。不是结束的好理由。 – 2009-10-06 17:09:05

回答

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

我在第二个函数position()中做了一些更改。当我做你告诉我的,我得到一个错误“'vertexList':未声明的标识符” – 2009-10-06 17:13:02

+0

这就是为什么我提到这一点。您需要将“vertexList”替换为“pos”,因为您之前正在传递pos。 – 2009-10-06 17:13:56

+0

谢谢。有用。 – 2009-10-06 17:19:05

1

第一个帖子(里德·科普塞)是关于事实正确,它通常是更好地保持功能分开。

您是否考虑过使用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 
} 
+0

我在第二个函数position()中做了一些更改。当我做你告诉我的,我得到一个错误“'vertexList':未声明的标识符” – 2009-10-06 17:07:19

0

如果它没有编译翻转它们。把“位置”放在“三角形”前面