Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zeiger auf Feld von Zeigern

Empfohlene Antworten

Veröffentlicht

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

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)

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.

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

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.