C ++错误在单链接列表中插入值(E0137)[关闭]

问题描述 投票:0回答:1

我创建了一个单链表,它运行得很好,直到我将“基本”数据结构从单个int值更改为各种变量。

当我尝试存储从temp节点上的参数获取的数据时,insertAtEnd函数中会发生错误。

temp->nome = n;
temp->morada = m;
temp->telefone = t;
temp->idade = i;

int值显示没有错误,但char []得到错误“E0137 - 表达式必须是可修改的左值”。

List.h

struct node
{
    char nome[20];
    char morada[30];
    char telefone[9];
    Int idade;
    node *next;
};

class LinkedList
{
private:
    node *head;
    node *tail;
public:
    LinkedList();
    ~LinkedList();
    void insertAtEnd(char n[20], char m[30], char t[9], int i);
    void insertAtStart(char n[20], char m[30], char t[9], int i);
    void display(void);
    void deleteFirst(void);
    void deleteLast(void);
    void deleteAtPosition(int pos);
};

List.cpp

(...)
LinkedList::LinkedList()
{
    head = NULL;
    tail = NULL;
}
void LinkedList::insertAtEnd(char n[20], char m[30], char t[9], int i)
{
    node *temp = new node;
    temp->nome = n;
    temp->morada = m;
    temp->telefone = t;
    temp->idade = i;
    temp->next = NULL;
    if (head == NULL)
    {
        head = temp;
        tail = temp;
        temp = NULL;
    }
    else
    {
        tail->next = temp;
        tail = temp;
    }
}
(...)

Main.cpp的

(...)
LinkedList lista;
    char nome[20];
    char morada[30];
    char telefone[9];
    int idade;
    (...)
    switch (op) {
        case 1:
            cout << "Inserir nome: ";
            cin >> nome;
            cout << "Inserir morada: ";
            cin >> morada;
            cout << "Inserir telefone: ";
            cin >> telefone;
            cout << "Inserir idade: ";
            cin >> idade;
            lista.insertAtEnd(nome, morada, telefone, idade);
            break;
(...)

这些是我项目中的一些代码块,我认为是相关的,我几乎可以肯定没有其他内容可以解决这个问题,但如果你这么认为,请评论,我会编辑它。

提前致谢。

c++ linked-list singly-linked-list
1个回答
2
投票

您的代码生成以下错误:在成员函数'void LinkedList :: insertAtEnd(char *,char *,char *,int)':error:将'char *'赋值给'char [20]'时出现不兼容的类型。您必须将函数参数中的每个值复制到节点(我的意思是对数组中的每个值执行temp-> nome [0] = n [0])。您可以更改节点结构以使用指针而不是数组,这将变得更容易。如果您想了解更多信息,请查看以下链接:

https://www.tutorialspoint.com/cplusplus/cpp_passing_arrays_to_functions.htm

© www.soinside.com 2019 - 2024. All rights reserved.