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 !
Hallo Leute,
das ist mein erster Eintrag in diesem Forum, also bin mit dem Fachjargon hier noch nicht so vertraut
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
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: