Ich möchte eine Funktion mit OpenGL implementieren, um einen Zylinder in C++ zu rendern. Die Unterschrift meiner Funktion ist wie folgt:Verweis auf ein zweidimensionales Array
#define POINTS_NUM 15
#define DEMESION 3
void drawCylinder(int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][ DEMESION ]);
ich einen Verweis auf eine zweidimensionale Matrix verwenden möchten Benutzereingabe zu begrenzen, aber einige seltsame Verhalten geschieht. Wenn ich die Funktion wie oben erklärt implementieren, tritt ein Linker-Fehler:
Error 1 error LNK2005: "float (* vase)[3]" ([email protected]@3PAY02MA) already defined in shapes.obj vase.obj VaseAndAnimation
Hier vase
definiert ist als:
GLfloat vase[ POINTS_NUM ][ DEMESION ];
Zuerst dachte ich, es ist etwas falsch mit der letzten Dimension war. Also habe ich es in meinem zweiten Versuch weggelassen. Diesmal Erklärung meiner Funktion ist wie folgt:
void drawCylinder(int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][]);
Nun wird ein Fehler bei der Kompilierung tritt auf, wenn aufgerufen, wie (vase
Definition nicht geändert wird):
drawCylinder(10, 10, vase);
Compile Fehler:
Error 1 error C2087: 'vertices' : missing subscript d:\visual studio 2008\projects\project1\computer graphics\vaseandanimation\shapes.h 25 VaseAndAnimation
Error 2 error C2664: 'drawCylinder' : cannot convert parameter 3 from 'GLfloat [14][3]' to 'GLfloat (&)[14][1]' d:\Visual Studio 2008\Projects\Project1\Computer Graphics\VaseAndAnimation\vase.cpp 64 VaseAndAnimation
Error 3 error C2087: 'vertices' : missing subscript d:\visual studio 2008\projects\project1\computer graphics\vaseandanimation\shapes.h 25 VaseAndAnimation
Error 4 error C2087: 'vertices' : missing subscript d:\Visual Studio 2008\Projects\Project1\Computer Graphics\VaseAndAnimation\shapes.cpp 12 VaseAndAnimation
Von diesem Fehler kann ich sehen, dass Parameter vertices
wirklich eine Referenz auf ein zweidimensionales Array behandelt wird, aber warum vase
als 012 geparst wirdin meiner ersten Version?
Meine IDE ist Visual Studio 2008. Ich habe es nicht mit GCC versucht; ist das Verhalten compilerabhängig?
Hoffe jemand kann mir eine Hand geben, um die Falle loszuwerden.
möglich Duplikat [Wie gebe ich einen Verweis auf ein zweidimensionales Array an eine Funktion?] (Http://stackoverflow.com/questions/404232/how-do-i-pass-a- Referenz zu einem zweidimensionalen Array-to-a-Funktion) –