Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2011, 10:07
Avatar de neandertal
neandertal
 
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 9 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