Problem beim nutzen von vectoren und dem schreiben in eine datei
-
Hi,
der tag geht ja nie zu ende ohne Probleme naja jetzt hab ich ein Problem was ich nur mit extrem viel code aufzeigen kann also hoffe das ok weil das problem besteht in 3 datein in meiner main.cpp meiner VTKWriter.cpp und VTKWriter.h also es ist folgendes das was ich auskommentiert hab im folgendem code das hab das funktioniert und ist ja das selbe wie des line, lines,.... ist auch nur kopiert und mein porblem ist wie ich die zusammen bekomme weil wenn ich die kommentarzeichen wegmach dann gibts 2 errors
also erstmal die quellcodes
main.cpp
#include <fstream> #include <iostream> #include <string> #include "VTKWriter.h" #include "Point.h" using namespace std; int main ( ) { VTKWriter wr("C:/hallo.vtk",2,true,"Example"); std::vector<Point> points; points.push_back(Point(10,0,0)); points.push_back(Point(30,0,0)); points.push_back(Point(30,20,0)); points.push_back(Point(0,20,0)); points.push_back(Point(10,0,0)); /* std::vector<int> poly1; poly1.push_back(0); poly1.push_back(1); poly1.push_back(2); std::vector<int> poly2; poly2.push_back(3); poly2.push_back(4); std::vector<std::vector<int> > polygons; polygons.push_back(poly1); polygons.push_back(poly2); */ std::vector<int> line1; line1.push_back(0); line1.push_back(1); line1.push_back(2); std::vector<int> line2; line2.push_back(3); line2.push_back(4); std::vector<std::vector<int> > lines; lines.push_back(line1); lines.push_back(line2); // wr.writePolygons(points,polygons); wr.writeLines(points,lines); }VTKWriter.cpp
#include "VTKWriter.h" #include "Point.h" #include <fstream> #include <iostream> VTKWriter::VTKWriter(QString strFilename, int nVersion, bool bAscII, QString strName) { m_strFilename = strFilename; m_nVersion = nVersion; m_bAscII = bAscII; m_strName = strName; m_pFile = NULL; m_pStream = NULL; open(); writeHeader(); } VTKWriter::~VTKWriter(void) { m_pFile->close(); } bool VTKWriter::open() { m_pFile = new QFile(m_strFilename); if (!(m_pFile->open(QIODevice::ReadWrite))) { delete m_pFile; m_pFile = NULL; return false; } m_pStream = new QTextStream(m_pFile); return true; } QString VTKWriter::getFilename(void) const { return m_strFilename; } void VTKWriter::writeHeader(void) { (*m_pStream) << "# vtk DataFile Version " << m_nVersion << ".0\n"; (*m_pStream) << m_strName << " \n"; if (m_bAscII) { (*m_pStream) <<"ASCII \n"; } else { (*m_pStream) << "BINARY \n"; } } /* void VTKWriter::writePolygons(std::vector<Point> vecPoints, std::vector< std::vector< int > > vecPolygons ) { (*m_pStream) << "DATASET " << "POLYDATA\n"; writePointSection(vecPoints); writePolygonSection(vecPolygons); } */ void VTKWriter::writeLines(std::vector<Point> vecPoints, std::vector< std::vector< int > > vecLines ) { (*m_pStream) << "DATASET " << "POLYDATA\n"; writePointSection(vecPoints); writeLineSection(vecLines); } void VTKWriter::writePointSection(std::vector<Point> vecPoints) { int nPoints = vecPoints.size(); (*m_pStream) << "POINTS " << nPoints << " float\n"; for(int i=0; i< nPoints;i++) { Point p = vecPoints[i]; (*m_pStream) << p.x << " " << p.y << " " << p.z << "\n"; } } /* void VTKWriter::writePolygonSection(std::vector< std::vector< int > > vecPolygons ) { int nNumberOfEtries = 0; for(int i=0;i< vecPolygons.size(); i++) { nNumberOfEtries += 1 + vecPolygons[i].size(); } (*m_pStream) << "POLYGONS " << vecPolygons.size() << " " << nNumberOfEtries << "\n"; for(int i=0;i< vecPolygons.size(); i++) { (*m_pStream) << vecPolygons[i].size(); for(int j=0; j < vecPolygons[i].size();j++) { (*m_pStream) << " " << vecPolygons[i][j]; } (*m_pStream) << "\n"; } */ void VTKWriter::writeLineSection(std::vector< std::vector< int > > vecLines ) { int nNumberOfEtries = 0; for(int i=0;i< vecLines.size(); i++) { nNumberOfEtries += 1 + vecLines[i].size(); } (*m_pStream) << "LINES " << vecLines.size() << " " << nNumberOfEtries << "\n"; for(int i=0;i< vecLines.size(); i++) { (*m_pStream) << vecLines[i].size(); for(int j=0; j < vecLines[i].size();j++) { (*m_pStream) << " " << vecLines[i][j]; } (*m_pStream) << "\n"; } }VTKWriter.h
#include <qstring.h> #include <QtCore/QTextStream> #include <qfile.h> #include <vector> #include "Point.h" class VTKWriter { public: VTKWriter(QString strFilename, int nVersion, bool bAscII, QString strName); ~VTKWriter(void); bool open(void); QString getFilename(void) const; /*void writePolygons(std::vector<Point> vecPoints, std::vector< std::vector< int > > vecPolygons );*/ void writeLines(std::vector<Point> vecPoints, std::vector< std::vector< int > > vecLines ); private: void writePointSection(std::vector<Point> vecPoints); /*void writePolygonSection(std::vector< std::vector< int > > vecPolygons );*/ void writeLineSection(std::vector< std::vector< int > > vecLines ); void writeHeader(void); int m_nVersion; bool m_bAscII; QString m_strName; QFile* m_pFile; QTextStream* m_pStream; QString m_strFilename; };naja war jetzt sehr viel
also die frage ist wie ich das auskommentierte in das program einbinden kann
-
Es gibt 2 Errors? Dann poste die doch mal. Ist auf jeden Fall vielversprechender als 250 Zeilen Code verstehen.
gruß
Martin
-
dachte halt das es reichen würde wenn man meine anvorderung weis also das zusammenführen vom programm mit den auskommentierten zeilen aber errors kommen jetzt wenns hilft
line 165
fatal error C1075: end of file found before the left brace'{at'pfad....(120' was matched2ter
line 144
error C2601: 'VTKWriter::writeLineSection' : local function definitions are illegalerrors sind in der VTKWriter datei
-
GT schrieb:
dachte halt das es reichen würde wenn man meine anvorderung weis also das zusammenführen vom programm mit den auskommentierten zeilen aber errors kommen jetzt wenns hilft
line 165
fatal error C1075: end of file found before the left brace'{at'pfad....(120' was matched2ter
line 144
error C2601: 'VTKWriter::writeLineSection' : local function definitions are illegalerrors sind in der VTKWriter datei
Hat beides die Ursache darin, dass Du irgendwo (vor Zeile 144) eine Klammerebene aufgemacht hast, die Du vergessen hast zu schließen.
Gruß,
Simon2.
-
GT schrieb:
line 165
fatal error C1075: end of file found before the left brace'{at'pfad....(120' was matched--> In Zeile 140 eine } vergessen.
Dadurch sollte der 2. Fehler auch beseitigt werden.
-
Genial Klasse
geht jetzt dankeähm dann noch ne frage das habt ihr aus dem 120 rausgelesen?
line 165
fatal error C1075: end of file found before the left brace'{at'pfad....(120' was matcheddamit ich des dann auch mal weis wenn ichs brauch
-
GT schrieb:
Genial Klasse
geht jetzt dankeähm dann noch ne frage das habt ihr aus dem 120 rausgelesen?
Nein, sondern aus dem
end of file found before the left brace ... was matched
Google macht daraus zwar "Dateiende fand, bevor die linke Klammer zusammengebracht wurde", aber mit ein wenig Englischkenne kommt man zu "Dateiende gefunden, bevor ...".

Und wenn man weiß, dass mit {} Scopes geöffnet und geschlossen werden, wird ein
"local function definitions are illegal"
auch klar: Eine fehlende "}" schließt einen scope nicht und der folgende Code wird nicht mehr dem "globalen Scope" sondern einem "lokalen" zugeordnet. Damit wird aus der folgenden Funktiondefinition (also der Körper) illegal, weil er lokal ist:
int aeussereFkt(); // globale Funktionsdeklaration (erlaubt) int aeussereFkt() { // globale Funktionsdefinition (erlaubt) int innerFkt(); // lokale Funktionsdeklaration (erlaubt) int innerFkt() { // lokale Funktionsdefinition (VERBOTEN !!!!) return 0; } return 0; }Aber letztlich habe ich diese Fehlermeldung einfach schon so oft gesehen (und die ersten 20 mal, ohne sie zu verstehen), dass wir uns inzwischen beim Vornamen nennen.

Gruß,
Simon2.
-
ahso ok danke
-
GT schrieb:
Genial Klasse
geht jetzt danke
ähm dann noch ne frage das habt ihr aus dem 120 rausgelesen?In Zeile 120 war die öffnende Klammer, die du vergessen hast zu schkießen
