如何解决值类型“String*”不能分配给实体类型“Course”
我一直被这个错误困扰,找不到任何解决我的问题的方法。我有一个 insert_bts_node 函数(下面的代码)。
enter code hereBSTNodePtr insert_bst_node(BSTNodePtr self,String *item) {
/* check if found location,then insert */
if (self == NULL) {
self = malloc(sizeof * self);
self->course = item;
//item = strcpy(self->course,item);
self->left = self->right = NULL;
create_list(self->course);
//self->course = create_list();
}
/**
* else if (item < self->course) {
self->left = insert_bst_node(self->left,item);
}
*/
else if (strcmp(item,self->course)<0){
self->left = insert_bst_node(self->left,item);
}
else if (strcmp(item,self->course) >0){
self->right = insert_bst_node(self->right,item);
}
return self;
}
错误在 self->course = item 上弹出。 我使用的定义如下。
typedef char* String;
typedef struct Course {
String name;
StudentList students;
} Course;
typedef struct bstNode {
Course course;
struct bstNode* left;
struct bstNode* right;
} *BSTNodePtr;
解决方法
item
是 String*
类型,self->course
是 struct Course
类型,正如错误消息所说。
如果您想将项目分配给课程名称(String
类型),您应该执行 self->course.name = *item
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。