Visualizza la versione completa : [C++] Impostare la dimensione di un array con una costante
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!
Devi usare l'allocazione dinamica della memoria ...
Hum...mi potresti scrivere un due righe d'esempio su come si fa?
Usa la new per allocare ....
Cosa e' PathPoint ? Una classe? Una struttura?
I punti sono puntatori a quella struttura/classe?
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;
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?
Devi usare l'allocazione dinamica della memoria ...
int *i = new int[n];
...
Esatto ...
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?
Ha questi due costruttori:
PathPoint(PathGrid* pathGrid,Vector3 position, bool walkable, PathPoint* connectPoint[]);
PathPoint(PathGrid* pathGrid);