无法访问结构数组中的成员变量结构
我正在制作一个C程序,它需要访问结构中的结构数组。无法访问结构数组中的成员变量结构
定义看起来像下面
在主函数struct def_world
{
bool lock;
char tilemap;
def_tile tile[100][100];
struct def_tile
{
bool lock;
char kind;
def_obj * obj;
void * evt;
};
struct def_obj
{
bool lock;
int indexOfTable;
bool frozen;
char x,y;
char kind;
char face;
char * msg;
char * ip;
};
,我想访问世界tile[3][3]
的OBJ的脸。
我初始化世界
def_world world={0,};
但以下行犯错误
world.tile[3][3].obj=newobj();//newobj() returns def_obj type
world.tile[3][3].obj->face;
任何想法如何访问OBJ的脸?
尝试这些行来代替:
world.tile[3][3]->obj=newobj();//newobj() returns def_obj type
world.tile[3][3]->obj.face;
说明:
world.tile[3][3]
是
def_tile
。它的
obj
字段不是
def_obj
,而是
def_obj*
。因此,要获得它指向的
def_obj
,您应该使用
->obj
。
Inside
def_obj
,face只是一个char,所以你可以用
.face
来访问它。
-1这是不正确的。你已经倒过来了。 OP有它的权利。 –
@Chris:你当然是对的。第二次,这种情况发生在我身上今天=/ –
别担心,我们都有脑力激荡。我甚至会退还你的代表。 ;) –
至少要显示'newobj()'的声明,知道它是否返回一个'def_obj'对象或一个'def_obj *'指向'def_obj'的指针是很重要的。实际上,为什么不发布一个能够产生错误的可编辑示例 - 它不应该比现在更多,但它不需要人们猜测拼写错误(请使用copy-n-paste - 不要在SO编辑框中重新输入)。 –
使用VS2010对我来说很好(并且颠倒了结构的声明顺序)。另外,这是C++不是C,C中没有'bool'。也许'newobj'被定义为'def_obj newobj()'而不是'def_obj * newobj()'? – Skizz
的事情是,我的VS2010说,当我刚刚完成键入world.tile [3] [3]有什么错误吗? –