这个链表赋值为什么会报错啊


#include<iostream>
using namespace std;
#include<string.h>
class a
{
    string a1;
    
public:
    a* next;
    void y(string* a)
    {
        a1 = *a;
    }
};
int main()
{
    a* head = NULL;
    a* p;
    p = (class a*)malloc(sizeof(class a));
    string aa;
    cin >> aa;
    p->next = NULL;
    p->y(&aa);
    head = p;
}

【以下回答由 GPT 生成】

问题分析:这段代码会报错的原因是在使用malloc函数为节点分配内存空间时,没有调用构造函数进行初始化,导致节点中的成员变量没有正确初始化。

解决方案:可以使用new关键字动态分配内存空间,并调用构造函数进行初始化。

#include <iostream>
using namespace std;
#include <string.h>

class a
{
    string a1;

public:
    a* next;
    void y(string* a)
    {
        a1 = *a;
    }
};

int main()
{
    a* head = NULL;
    a* p = new a();  // 使用new关键字动态分配内存空间,并调用构造函数进行初始化
    string aa;
    cin >> aa;
    p->next = NULL;
    p->y(&aa);
    head = p;
    delete p;  // 使用delete关键字释放动态分配的内存空间
}

因为这段代码只涉及一个节点的创建和释放,并没有真正形成链表,所以对于链表的插入等操作暂未进行处理。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

哪里报错了?报错信息发一下啊