PDA

Visualizza la versione completa : [C++] Impostare la dimensione di un array con una costante


cadue
01-04-2007, 14:21
Salve! Vorrei dichiarare un array di "n" elementi, ho provato a fare così:



const int nOfPoint = squareList.size();
PathPoint* point[nOfPoint];


ma ottengo il seguente errore: error C2057: prevista espressione costante

Come posso risolvere? Ovviamente non so di che dimensione sarà l'array se non a run time...e non voglio usare un vector.
Grazie!

oregon
01-04-2007, 14:23
Devi usare l'allocazione dinamica della memoria ...

cadue
01-04-2007, 14:26
Hum...mi potresti scrivere un due righe d'esempio su come si fa?

oregon
01-04-2007, 14:40
Usa la new per allocare ....

Cosa e' PathPoint ? Una classe? Una struttura?

I punti sono puntatori a quella struttura/classe?

cadue
01-04-2007, 15:03
oK, forse l'esempio non era ad hoc.
Ecco una versione semplificata di quello che voglio fare:




int n = funzione_che_restituisce_un_int();
int array[n];

XWolverineX
01-04-2007, 15:06
Non puoi dichiarare un array dinamico utilizzandone uno statico:
praticamente


int i[n];


A meno che n non sia un const int, non funzionerà.
Devi usare l'allocazione dinamica della memoria, in questo modo


int *i = new int[n];
//usi l'array
delete[] n;

cadue
01-04-2007, 15:20
Capito. grazie
Ma cavolo, adesso che provo con il mio codice ho un altro problema.
Io devo creare un array di puntatori ad una classe.
La classe è PathPoint.



PathPoint* point = new PathPoint[n];


l'errore è il seguente: error C2512: 'PathPoint': non è disponibile alcun costruttore predefinito appropriato

Io voglio creare questa array di puntatori e poi uno per uno inizializzarlo...come faccio?

oregon
01-04-2007, 15:20
Devi usare l'allocazione dinamica della memoria ...



int *i = new int[n];
...


Esatto ...

oregon
01-04-2007, 15:22
Originariamente inviato da cadue
Capito. grazie
Ma cavolo, adesso che provo con il mio codice ho un altro problema.
Io devo creare un array di puntatori ad una classe.
La classe è PathPoint.



PathPoint* point = new PathPoint[n];


l'errore è il seguente: error C2512: 'PathPoint': non è disponibile alcun costruttore predefinito appropriato

Io voglio creare questa array di puntatori e poi uno per uno inizializzarlo...come faccio?

Per questo ti avevo chiesto informazioni sulla classe ... ma non le hai fornite ...

Non c'e' un costruttore di default per la tua classe? Quali costruttori esistono?

cadue
01-04-2007, 15:32
Ha questi due costruttori:



PathPoint(PathGrid* pathGrid,Vector3 position, bool walkable, PathPoint* connectPoint[]);
PathPoint(PathGrid* pathGrid);

Loading