2010-03-29 11 views
5

ottengo l'errore "intitializer fails to determine size of 'K'" alla rigaerrore: inizializzazione non riesce a determinare la dimensione di ‘K’

int K[]= new int[Vertices->total]; 

Come posso risolverlo?

+3

È necessario decidere se si sta programmando in '' C++ o ' C', e, se è il secondo, se stai usando 'C99' o no. –

+1

Messaggio di errore brutto. Che compilatore stai usando? –

+1

@nobugz In realtà, penso che sia un messaggio di errore ragionevole. –

risposta

18

Change

int K[]= new int[Vertices->total]; 

a

int *K = new int[Vertices->total]; 

Il primo è il modo Java di creazione di un array, dove si K è un riferimento ad un array di interi. Ma in C++ dobbiamo rendere il puntatore K un tipo intero.

+0

Thankx funziona, ma posso usare lo stesso K per memorizzare gli array – smile

+1

@shiva Quasi. Gli array in c sono in realtà solo indicatori di blocchi di memoria. quindi, se vuoi usare K per manipolare una matrice di array di numero intero, la dichiarazione sarebbe 'int K ** = new int * [ ' – sum1stolemyname

3

new int[Vertices->total] restituisce un puntatore e, pertanto, int *K = new int[Vertices->total]; dovrebbe funzionare correttamente.

Se si conosce la dimensione di Vertices->total al momento della compilazione (cioè costanti) allora si potrebbe aver utilizzato int K[Vertices->total]; // alloca la memoria sullo stack

Problemi correlati