Compile Fehler - Hilfe gebraucht

sh4rki

Grünschnabel
Compile Fehler - Hilfe gebraucht (MVS 2005)

Hallo Leute,

das ist mein erster Eintrag in diesem Forum, also bin mit dem Fachjargon hier noch nicht so vertraut :).

Also ich schreibe grad einen Scenen-Graphen in C++ und ich bin auf einen Fehler gestoßen, den ich nicht verstehe.

Ich habe eine Klasse erstellt, die Shape-Informationen speichert. Sie soll einen Vector übergeben bekommen, in dem Vertices in Form eines Arrays mit 3 "Fächern" gespeichert werden. Hier wird dieser Vector initialisiert:
Klasse "Main":

std::vector<float[3]> vec;
float vert[3]= { -20.0, 0.0, 40.0 };
vec.push_back(vert);
vert[0] = 20.0;
vert[1] = 0.0;
vert[2] = 40.0 ;
vec.push_back(vert);
vert[0] =20.0;
vert[1] =0.0;
vert[2] =-20.0;
vec.push_back(vert);
vert[0] =-20.0;
vert[1] = 0.0;
vert[2] =-20.0;
vec.push_back(vert);
Shape sh("Floor", "grey" , "floor" , vec);

Er soll in dieser Klasse gespeichert und in die Klassenvariable kopiert werden:


class Shape : public Part {

public:
typedef const float vertices[3];
float geo[3];
std::string material;
std::vector<float[3]> geometry;
Teapot Pot;


Shape(std::string n, std::string mat,std::string type , std::vector<vertices> g){
name = n;
material=mat;
for( std::vector<vertices>::iterator i = g.begin();i != g.end(); i++ )
{
geo[0]=*i[0];
geo[1]=*i[1];
geo[2]=*i[2];
geometry.push_back(geo);
}


};


Jedoch wirft der Compiler immer diesen Fehler aus:

D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(116) : error C2535: 'const float (*std::allocator<_Ty>::address(const float (&)[3]) const)[3]': Memberfunktion bereits definiert oder deklariert
with
[
_Ty=Shape::vertices
]
D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(110): Siehe Deklaration von 'std::allocator<_Ty>::address'
with
[
_Ty=Shape::vertices
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(416): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::allocator<_Ty>".
with
[
_Ty=Shape::vertices
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(426): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::_Vector_val<_Ty,_Alloc>".
with
[
_Ty=Shape::vertices ,
_Alloc=std::allocator<Shape::vertices >
]

Bin über jede Hilfe dankbar !
 
Zuletzt bearbeitet:
Um es genauer zu machen:

Code:
class Shape : public Part  {

public:
	typedef std::vector<GLfloat[3]> geometry_vector;

	GLfloat geo[3];
	std::string material,geometry_type ;
	geometry_vector geometry;
	Teapot Pot;

	
	Shape(std::string n, std::string mat,std::string type , std::vector<const GLfloat [3]> g){
		name = n;
		material=mat;
		geometry_type = type;
		for( std::vector<const GLfloat [3]>::iterator i = g.begin();i != g.end(); i++ )
		{
			geo[0]=*i[0];
			geo[1]=*i[1];
			geo[2]=*i[2];
			geometry.push_back(geo);
		}


	};

Irgendwo in dem Code wird dieser Fehler erzeugt:

D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(116) : error C2535: 'const float (*std::allocator<_Ty>::address(const float (&)[3]) const)[3]': Memberfunktion bereits definiert oder deklariert
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(110): Siehe Deklaration von 'std::allocator<_Ty>::address'
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(416): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::allocator<_Ty>".
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(426): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::_Vector_val<_Ty,_Alloc>".
with
[
_Ty=const float [3],
_Alloc=std::allocator<const float [3]>
]
c:\dokumente und einstellungen\shark\eigene dateien\visual studio 2005\projects\test\scene_graph\Shape.h(31): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::vector<_Ty>".
with
[
_Ty=const GLfloat [3]
]
Main.cpp
D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(116) : error C2535: 'const float (*std::allocator<_Ty>::address(const float (&)[3]) const)[3]': Memberfunktion bereits definiert oder deklariert
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\xmemory(110): Siehe Deklaration von 'std::allocator<_Ty>::address'
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(416): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::allocator<_Ty>".
with
[
_Ty=const float [3]
]
D:\Programme\Microsoft Visual Studio 8\VC\include\vector(426): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::_Vector_val<_Ty,_Alloc>".
with
[
_Ty=const float [3],
_Alloc=std::allocator<const float [3]>
]
c:\dokumente und einstellungen\shark\eigene dateien\visual studio 2005\projects\test\scene_graph\Shape.h(31): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::vector<_Ty>".
with
[
_Ty=const GLfloat [3]
]

wenn man im Konstruktor das "const" vor dem vector Inhalt weglässt, meckert er wegen Konvertierung von "const" zu nicht "const" rum (hab schon gelesen dass es daran liegen könnte)...

HILFE :confused:
 
Zurück