Foros del Web » Programación para mayores de 30 ;) » C/C++ »

error: dereferencing pointer to incomplete type

Estas en el tema de error: dereferencing pointer to incomplete type en el foro de C/C++ en Foros del Web. Hola, Estoy intentando implementar un programa que calcula rotaciones de vectores en R2. Tengo una estructura sVector2 que contiene dos floats x, y. Entonces tengo ...
  #1 (permalink)  
Antiguo 10/11/2011, 10:07
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 2 meses
Puntos: 1
Busqueda error: dereferencing pointer to incomplete type

Hola,

Estoy intentando implementar un programa que calcula rotaciones de vectores en R2. Tengo una estructura sVector2 que contiene dos floats x, y. Entonces tengo un puntero que apunta a una estructura de ese tipo (lo defino como Vector2). Creo que estoy haciendo algo mal al acceder a los mienbros de la estructura, pero no logro averiguar el problema. Al intentar hacer "Vector2->x" o "Vector2->y" me da el error que menciono el el título " dereferencing pointer to incomplete type"

Copio el código del programa:

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. struct sVector2{
  6.     float x;
  7.     float y;
  8. };
  9. typedef struct sVector* Vector2;
  10.  
  11. Vector2 rotacion(Vector2 v, int grados);
  12. void muestra_coord(Vector2 a);
  13. Vector2 nuevo_vector();
  14.  
  15. int main(){
  16.     int i,j;
  17.     Vector2 a = nuevo_vector();
  18.     Vector2 b = nuevo_vector();
  19.     for(i=0; i<40; i++){
  20.         for(j=0; j<40; j++){
  21.             a->x = (float) i;          //ERROR
  22.             a->y = (float) j;         //ERROR
  23.             b=rotacion(a,90);
  24.             muestra_coord(a);
  25.             muestra_coord(b);
  26.             printf("\n");
  27.         }
  28.     }
  29.     return 0;
  30. }
  31.  
  32. Vector2 rotacion(Vector2 v, int grados){
  33.     Vector2 res = nuevo_vector();
  34.     res->x = cos(grados) - sin(grados);          //ERROR
  35.     res->y = sin(grados) + cos(grados);        //ERROR
  36.     return res;
  37. }
  38.  
  39. void muestra_coord(Vector2 a){
  40.     printf("(%f,%f) ",a->x,a->y);                     //ERROR
  41. }
  42.  
  43. Vector2 nuevo_vector(){
  44.     Vector2 nuevo = (Vector2) malloc( sizeof(struct sVector2) );
  45.     if(nuevo == NULL){
  46.         printf("No se puede alocar memoria \n");
  47.         exit(1);
  48.     }
  49.     return nuevo;
  50. }

Gracias

Última edición por neandertal; 10/11/2011 a las 10:47
  #2 (permalink)  
Antiguo 10/11/2011, 10:49
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: error: dereferencing pointer to incomplete type

Sera que sVector no existe?

cambia

typedef struct sVector* Vector2;

por

typedef struct sVector2* Vector2;
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 10/11/2011, 11:18
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: error: dereferencing pointer to incomplete type

Oooh , me estava volviendo loco por esa errata

Muchas gracias

Etiquetas: pointer, programa, struct, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:27.