2010-03-29 8 views
5

me sale el error "intitializer fails to determine size of 'K'" en la líneaerror: el inicializador no puede determinar el tamaño de la ‘K’

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

¿Cómo lo soluciono?

+3

Es necesario decidir si está programando en C++ '' o ' C', y, si es el último, si estás usando 'C99' o no. –

+1

Mensaje de error pésimo. Qué compilador estas usando? –

+1

@nobugz En realidad, creo que es un mensaje de error razonable. –

Respuesta

18

Cambio

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

a

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

La primera es la forma Java de crear una matriz, donde K es una referencia a una matriz de enteros. Pero en C++ necesitamos hacer que K sea un puntero al tipo entero.

+0

Thankx funciona, pero ¿puedo usar la misma K para almacenar matrices – smile

+1

@shiva Almost. Las matrices en c son en realidad solo indicadores de bloques de memoria. entonces, si quiere usar K para manipular una matriz de matriz de entero, la declaración sería 'int K ** = new int * [ ' – sum1stolemyname

3

new int[Vertices->total] devuelve un puntero y, por lo tanto, int *K = new int[Vertices->total]; debería funcionar bien.

Si se conoce el tamaño de Vertices->total en tiempo de compilación (es decir, constante), entonces podría haber utilizado int K[Vertices->total]; // asigna la memoria en la pila

Cuestiones relacionadas