derSchorsch Geschrieben 22. Mai 2006 Geschrieben 22. Mai 2006 Hi, ich will eine Matrix schaffen, jedoch bringt der Compiler mir Fehler beim Anlegen... int z=10, s=10; int** mat = new int*[z]; for(int i=0; i<z; i++) // <-- hier sämtliche Fehlermeldungen mat = new int; Ich weiß ehrlich gesagt nicht, wie es anders gehen sollte. Vielen Dank im Voraus mfg Schorsch Zitieren
Klotzkopp Geschrieben 22. Mai 2006 Geschrieben 22. Mai 2006 Wenn du jetzt noch verraten hättest, wie die Fehlermeldung lautet, hätte man dir vielleicht sogar helfen können Zitieren
derSchorsch Geschrieben 22. Mai 2006 Autor Geschrieben 22. Mai 2006 10 Fehlermeldungen, alle für die oben markierte Zeile: error C2143: Syntaxfehler: fehlendes ';' vor 'for' error C2143: Syntaxfehler : Fehlendes ')' vor ';' error C2143: Syntaxfehler : Fehlendes ';' vor '<' error C2501: 'i' : Fehlende Speicherklasse oder Typbezeichner error C2143: Syntaxfehler : Fehlendes ';' vor '<' error C2143: Syntaxfehler : Fehlendes ';' vor '++' error C2501: 'i' : Fehlende Speicherklasse oder Typbezeichner error C2086: 'i' : Neudefinition error C2143: Syntaxfehler : Fehlendes ';' vor '++' error C2059: Syntaxfehler : ')' wenn ich probiere, die matrix außerhalb meines Programms zu kompilieren, kommen zwar keine Fehlermeldungen, aber dafür Linkerrors: für int main() { int z=10, s=10; int** mat = new int*[z]; for(int i=0; i<z; i++) mat = new int; return 0; } kommt: Linker-Vorgang läuft... LIBCD.lib(wincrt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16 Debug/zeigerarray.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. zeigerarray.exe - 2 Fehler, 0 Warnung(en) Zitieren
Klotzkopp Geschrieben 22. Mai 2006 Geschrieben 22. Mai 2006 10 Fehlermeldungen, alle für die oben markierte Zeile:Wo steht denn dieser Code? Zeig mal ein wenig mehr drum herum. LIBCD.lib(wincrt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16Falscher Projekttyp. Du hast statt einer Konsolenanwendung eine Windowsanwendung erstellt. Zitieren
derSchorsch Geschrieben 22. Mai 2006 Autor Geschrieben 22. Mai 2006 Ja, 'tschuldigung, hatte nur schnell ein Projekt erstellt, obs überhaupt funktioniert und ne win32 anwendung gemacht :floet: Eigentlich handelt es sich um ein OpenGL Projekt, bei dem ich eine Landschaft aus 4 Punkten erstelle, d.h. von den 4 Höhen immer wieder die Durchschnitte berechnen und leicht verändern, um so neue Zwischenpunkte zu erschaffen... Ich will diese Landschaft als Vektoren auf dem Heap machen: class Vector { public: Vector(); Vector(GLfloat x1,GLfloat y1,GLfloat z1): x(x1),y(y1),z(z1) {}; ~Vector(); void SetComp(GLfloat x_, GLfloat y_, GLfloat z_) { x=x_; y=y_; z=z_; } GLfloat x, y, z; }; Vector::Vector(): x(0),y(0),z(0) {} Vector::~Vector() {} und dann die Punkte erstellen mit int gen = 8; int zeilen_anzahl = pow(2, gen)+1, spalten_anzahl = pow(2, gen)+1; Vector** Punkt = new Vector*[zeilen_anzahl]; for (int i = 0; i< zeilen_anzahl; i++) Punkt[i] = new Vector[spalten_anzahl]; Das Drumherum SOLLTE eigentlich für diesen Part uninteressant sein, da ich ja erst den SPeicher allokiere und die Rechenroutinen vollkommen unberührt bleiben, es aber schon bei der Deklaration zu den besagten Problemen kommt. Falls du den gesamten Code sehen wikllst, poste ich ihn noch, aber gehört eigentlich nicht in das Forum hier... Zitieren
Klotzkopp Geschrieben 22. Mai 2006 Geschrieben 22. Mai 2006 Das Drumherum SOLLTE eigentlich für diesen Part uninteressant seinIst er aber nicht. Es geht mir auch nicht um Details, ich wollte nur wissen, innerhalb welchen Konstrukts dieser Code steht. Aber ich vermute inzwischen, dass dieser Code gar nicht in einer Funktion, sondern außerhalb steht. Und das geht nicht. Anweisungen müssen immer in einer Funktion stehen. Auf globaler Ebene dürfen nur Deklarationen sowie Definitionen von globalen und statischen Membervariablen, ggf. mit Initialisierung stehen. Zitieren
derSchorsch Geschrieben 22. Mai 2006 Autor Geschrieben 22. Mai 2006 Genau das war der Fehler, und ich hatte an der Deklaration schon gezweifelt... Ja, gibt es ne Möglichkeit, das ganze trotzdem irgendwie global zu machen? Hab das Feld jetzt doppelt, für die Berechnungsfkt. und die main()-Fkt. (geht nicht anders, da die Rechenarbeit nicht jedes Frame gemacht werden soll...) Zitieren
Klotzkopp Geschrieben 22. Mai 2006 Geschrieben 22. Mai 2006 Es reicht aus, wenn du die Schleife in die main-Funktion steckst. Der Rest kann so bleiben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.