[Gelöst]Nichtdefinierbarer Fehler bei Verwendung eines "vector"
-
Hallo
Habe folgende Klasse, welche von einigen anderen Klassen verwendet wird und einen 3D-Vector beschreibt. Bei definieren eines stl::vectorvector<int> faces;zur simplen Speicherung einiger Integers bekomme ich eigenartige Fehler.
Habe noch einige andere Klassen, unter anderem Mesh.h, die diese Klasse Vec.h verwendet und in der auch einige vector-datenstrukturen definiert werden, die aber keine Fehler machen.#pragma once #include <cmath> #include <vector> class Vec{ public : double x,y,z; double n_x, n_y, n_z; double plane_x, plane_y, plane_z; int index; int *Neighbors; vector<int> faces; //DIESE ZEILE VERURSACHT DEN FEHLER int Face1; int Face2; int Face3; double Comatrix[3][3]; double *facArrayX; double *facArrayY; double *facArrayZ; double *facArrayXX; double *facArrayXY; double *facArrayXZ; double *facArrayYY; double *facArrayYZ; double *facArrayZZ; Vec(); Vec(float x,float y, float z); void normalizeNormal(); void normalizeVector(); void offsetVector(Vec *in, Vec *offset, Vec *out); friend bool Vec::operator<(const Vec& a,const Vec& b); static float dot(Vec *a,Vec *b); static Vec* cross(Vec *a,Vec *b); static float spat(Vec *a,Vec *b,Vec *c); static float spatPunkt(Vec a,Vec b,Vec c); static float volumen(Vec *a,Vec *b,Vec *c,Vec *d); };Das ist die Fehlermeldung:
1>------ Build started: Project: OpenGLForms, Configuration: Debug Win32 ------ 1>Compiling... 1>Vec.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>Parser.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>OpenGLForms.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>OpenGL.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>Mesh.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>Face.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>Data.cpp 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2143: syntax error : missing ';' before '<' 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\dokumente und einstellungen\projects\openglforms\openglforms\Vec.h(23) : error C2238: unexpected token(s) preceding ';' 1>Generating Code... 1>Build log was saved at "file://c:\Dokumente und Einstellungen\Projects\OpenGLForms\OpenGLForms\Debug\BuildLog.htm" 1>OpenGLForms - 21 error(s), 16 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
-
vector<int> faces; //DIESE ZEILE VERURSACHT DEN FEHLERdurch
std::vector<int> faces; //DIESE ZEILE VERURSACHT DEN FEHLERersetzen...
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
UUps da war jemand schneller

Hallo !
Einfügen vonusing namespace std;hat das Problem gelöst...

Danke für eure Aufmerksamkeit....
-
Blue5teel schrieb:
Einfügen von
using namespace std;hat das Problem gelöst...

Und jetzt solltest du nur noch lernen, warum diese Lösung schlecht ist. Nimm lieber Jochens Variante und schreib explizit das std:: vor die Bezeichner, die du aus dem Namensraum verwenden willst.
in Kurzform: Mit diesem "using namespace std" holst du pauschal alle std-Bezeichner in deinen Namensraum - da sind Namenskonflikte und Merhdeutigkeiten vorprogrammiert (nicht unbedingt in deinem Code, aber potentiell bei jedem, der diesen Code verwenden will).
-
Danke CStoll...
Und jetzt solltest du nur noch lernen, warum diese Lösung schlecht ist. Nimm lieber Jochens Variante und schreib explizit das std:: vor die Bezeichner, die du aus dem Namensraum verwenden willst.
in Kurzform: Mit diesem "using namespace std" holst du pauschal alle std-Bezeichner in deinen Namensraum - da sind Namenskonflikte und Merhdeutigkeiten vorprogrammiert (nicht unbedingt in deinem Code, aber potentiell bei jedem, der diesen Code verwenden will).
Du hast recht, aber der von dir beschriebene Sachverhalt war mir schon bewusst.
Hätte ich vielleicht erwähnen sollen.
Danke trotzdem....Wünsche euch allen nen schönen Tag
