我希望数组中的变量指向给定对象:
typedef struct Object {
void *key;
struct Object *top;
struct Object *next;
} Object;
typedef struct Table{
Object *linkedObjects;
size_t size, originalSize;
HashFcn hfun;
PrintFcn pfun;
ComparisonFcn fcomp;
} Table;
Boolean InsertObject(TableP table, ObjectP object)
{
int i = (*table->hfun)(object->key, table->size);
table->linkedObjects[i] = object;
}
从以前的问题中我了解到,执行此操作table->linkedObjects[i]
会解除对象,这就是我收到错误incompatible types when assigning to type ‘Object’ from type ‘ObjectP’
的原因。我怎样才能告诉那个时候的变量指向给定的对象?我尝试过这样的事情:
*(table->linkedObjects[i]) = object;
但这显然不是这样做的方法。我应该将我得到的对象作为参数释放吗?
答案 0 :(得分:0)
假设ObjectP
的类型确定为struct Object *
(您未在问题中提及),请尝试以下操作:
table->linkedObjects[i] = *object;
请记住,这将复制 object
的内容。
如果您不想要此行为,并且希望保留指针,则应将linkedObjects
结构的Table
成员声明为Object **
或{{ 1}}。
答案 1 :(得分:0)
如果使用类似malloc(i * sizeof(Object *)的内容进行内存分配;并且您的对象也是指向Object的指针,那么它应该可以工作。