将结构复制到相同类型的另一个时出错

时间:2018-02-15 13:58:19

标签: c++

以下是c ++代码段

struct node {
    struct shm_ipc_msg_s msg;
    struct node *next;
};

enqueue_shm_events(Queue *q, shm_ipc_msg *msg)
{
    struct node *temp = new node;
    temp->msg = msg;      // error here!!!!
    if (q->front == NULL)
       q->front = temp;
    else
       q->rear->next = temp;
}

错误:

error: no match for 'operator=' in 'temp->node::msg = msg'

任何人都可以帮我纠正这个错误

提前致谢

1 个答案:

答案 0 :(得分:1)

你有两个问题:

  1. 您的类型名称不同
  2. 您正在指定指向非指针的指针
  3. 修复1:各种修复。一种可能性是typedef struct shm_ipc_msg_s shm_ipc_msg

    修复2:将失败的行更改为temp->msg = *msg;以取消引用指针,以便您可以复制实际的结构内容