值类型“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;

解决方法

itemString* 类型,self->coursestruct Course 类型,正如错误消息所说。 如果您想将项目分配给课程名称(String 类型),您应该执行 self->course.name = *item