我想用OpenGL实现一个函数,以用C++渲染圆柱体。我函数的签名如下:

#define POINTS_NUM  15
#define DEMESION    3

void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][ DEMESION ] );
我想使用对二维数组的引用来限制用户输入,但是正在发生一些奇怪的行为。当我实现上面声明的函数时,发生链接器错误:

此处vase定义为:
GLfloat vase[ POINTS_NUM ][ DEMESION ];
起初,我认为最后一个维度出了问题。因此,我在第二次审判中将其省略。我的函数的这次声明是这样的:
void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][] );
现在,当调用为时,将发生编译时错误(vase定义未更改):
drawCylinder( 10, 10, vase );
编译错误:

从这个错误中,我可以看到参数vertices确实被视为对二维数组的引用,但是为什么在我的第一个版本中vase被解析为float (* vase)[3]
我的IDE是Visual Studio2008。我还没有在GCC上尝试过它。该行为是否与编译器相关?
希望有人可以帮我摆脱陷阱。

最佳答案

您的第一个声明很好。似乎您已在头文件中定义了vase

07-24 15:23