有问题的一行:
void deleteController(Controller* ctrl) {
...
destroy(ctrl->repo);
...
}
从不兼容的指针类型[默认启用]
传递'destroy'的参数1问题函数的标题:
void destroy(Vector* v);
Controller struct:
typedef struct {
TransRepository* repo;
} Controller;
TransRepository struct:
typedef struct {
Vector* TList;
char* fileName;
} TransRepository;
Vector struct
typedef struct {
TElem* elems; // vector elements
int len; // #of elements from the vector
int capacity; // maximum capacity of the vector
CmpFun cmp; // comparison function for two generic elements
CpyFun cpy; // cloning function for a generic element
DelFun del; // deallocation function for a generic element
} Vector;
其他定义:
typedef void* TElem;
typedef int (*CmpFun)(TElem, TElem);
typedef TElem (*CpyFun)(TElem);
typedef void (*DelFun)(TElem);
我考虑过更改destroy()
参数的类型
但是效果不好。所以我在参数部分添加了另一个字段,认为函数找不到它需要的东西。
destroy(ctrl->repo->TList);
错误消失但我正等着你确认我做对了(:
答案 0 :(得分:1)
是的...... destroy
函数说:
void destroy(Vector* v); // I want a pointer to a Vector
你给了它:
destroy(ctrl->repo); // A TransRepository pointer
所以当然不开心。由于TransRepository
结构包含指向Vector的指针,答案是肯定的,修复 应该通过它:
destroy(ctrl->repo->TList);
没有看到任何其他代码,我会说你做了正确的事。