2013-02-17 96 views
-2

将引发错误的指针,我不知道知道为什么:访问的结构是在结构

physics.c:74: error: incompatible types in initialization

typedef struct gameBody gameBody; 

struct gameBody 
{ 
    cpBody *body; 
    int numberOfShapes; 
    cpShape *arrayOfShapes; //This stores an array of pointers to Shapes 
}; 

//Struct that stores the cpSpace object and the array of pointers to the body objects 
typedef struct gameSpace gameSpace; 

struct gameSpace 
{ 
    cpSpace *space; 
    int numberOfObjects; 
    gameBody *arrayOfObjects;  //This stores an array of gameBodys 
}; 


for(int i = 0; i < space -> numberOfObjects; i++) 
{ 
    //body info 
    gameBody *gBody = space -> arrayOfObjects[i]; 
} 
+2

和..该行是? – 2013-02-17 08:55:43

+0

您在25分钟内重复发布相同的问题! – 2013-02-17 09:00:42

+0

而不是发布每个不同编译器错误的问题,请执行此操作。 1.发表问题。 2.阅读并理解答案。 3.使用这种理解来修复代码中的多个相同的错误。 4.如果没有先检查是否与20分钟前发布的问题完全相同,请不要发布新问题! – 2013-02-17 09:03:21

回答

1

我猜这是在该行

gameBody *gBody = space -> arrayOfObjects[i]; 

虽然space->arrayOfObject是一个指针,space->arrayOfObject[i]不是的指针。

你要么必须声明gBody到不会成为指针:

gameBody gBody = space->arrayOfObjects[i]; 

或者使用地址的阵列中的对象上的操作者;

gameBody *gBody = &space->arrayOfObjects[i]; 
1

尝试

gameBody *gBody = &(space -> arrayOfObjects[i]); 

gameBody *gBody = space -> arrayOfObjects + i; 
0

gBodygameBody *型的,并且是space->arrayOfObjects[i]gamebody类型。也许你想:

gameBody *gBody = &space->arrayOfObjects[i]; 
0

从您发布

gameBody *gBody = space->arrayOfObjects[i] <〜是该问题的代码...

这应该是:

gameBody *gBody = &(space->arrayOfObjects[i]);