基本的に私がやろうとしているのは、ノードを使用してノード内に任意のデータ型を配置できる汎用リストを作成するvoid*
ことです。これは一般的なリストであり、その中に入れたい構造です。
typedef struct LIST{
struct LIST *next;
void *data;
} LIST;
struct person {
char *name;
int age;
};
ポインタを割り当てる機能です
LIST *create_node(void *data, int size) {
LIST *tmp;
tmp = NULL;
tmp = (LIST*)malloc(sizeof(LIST));
tmp->data = malloc(size);
tmp->data = data;
memcpy(tmp->data, data, sizeof(data));
tmp->next = NULL;
return tmp;
}
これは私が関数を呼び出すcreate_node
関数です
void test_list() {
LIST *my_list;
struct person *my_person;
my_list = NULL;
my_person = (struct person*)malloc(sizeof(struct person));
strcpy(my_person->name, "PABLO");
my_person->age = 23;
my_list = create_node(my_person, sizeof(struct person));
printf("%d \n", my_list->data->age);
}
問題は、「構造または列挙型ではないものでのメンバーの年齢の請願」というエラーが発生する最後の行にあります。どうすればこの問題を取り除くことができますか?