gpt4 book ai didi

无法转换为指针类型,转换结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:17 25 4
gpt4 key购买 nike

将结构转换为指针时出现“无法转换为指针类型”错误。

我试图将 ObjectExtended 类型的结构转换为 ObjectBase 的指针,ObjectExtended 的第一个成员是指向 ObjectBase 的指针,因此它应该可以工作。

代码如下:

typedef struct ObjectBase
{
int integer1;
int integer2;
}ObjectBase;

typedef struct ObjectExtended
{
ObjectBase* baseObj;
char* string;
}ObjectExtended;

int main(int argc,char** argv)
{
ObjectExtended* objExtended = malloc(sizeof(ObjectExtended));
objExtended->string = "TEST_OBJECT";

objExtended->baseObj = malloc(sizeof(ObjectBase));
objExtended->baseObj->integer1 = 10;
objExtended->baseObj->integer2 = 11;

printf("Extended Object:\n");
printf("\tString: %s\n",objExtended->string);
printf("\tInt1: %i\n",objExtended->baseObj->integer1);
printf("\tInt2: %i\n",objExtended->baseObj->integer2);

ObjectBase* objBase = (ObjectBase*)(*objExtended);
printf("Base Object:\n");
printf("\tInt1: %i\n",objBase->integer1);
printf("\tInt2: %i\n",objBase->integer2);

free(objExtended->baseObj);
free(objExtended);
return 0;
}

最佳答案

    ObjectBase* objBase = (ObjectBase*)(*objExtended);

应该是

    ObjectBase* objBase = (ObjectBase*)objExtended;

我觉得。您不需要取消引用 objExtended

关于无法转换为指针类型,转换结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26243355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com