Zum Inhalt springen

Zeiger auf Feld von Zeigern


derSchorsch

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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@16
Falscher Projekttyp. Du hast statt einer Konsolenanwendung eine Windowsanwendung erstellt.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Drumherum SOLLTE eigentlich für diesen Part uninteressant sein
Ist 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau das war der Fehler, und ich hatte an der Deklaration schon gezweifelt...:rolleyes:

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...)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...