错误 C2440:"=":无法从"int"转换为"int*"

Error C2440: '=' : cannot convert from 'int' to 'int*'

本文关键字:int 转换 C2440 错误      更新时间:2023-10-16

我正在尝试将一个元素添加到C++中的对偶链表中。我遇到了一个错误,告诉我它无法从int转换为int*。以下是发生错误的代码:

void DLList::addNode(int data, int priority) {
    node *n;
    n = new node;
    n->priority = priority;
    n->data = data;
    if (DLList::first == NULL)
        DLList::first = n;
    else
        DLList::last = n;
}

值data和优先级都是通过主函数中的随机数生成器选择的整数值,用于调用addNode函数。错误确实发生在线上

    n->data = data;

这是节点的结构:

struct node {
int priority;
int *data;
node *next;
node *prev;
};

由于data是您的示例中唯一的int,我将继续假设错误在这一行

n->data = data;

所以你的node结构中有这样的东西:

struct node
{
 //Nodey stuff
 int* data;
};

因此,n->data = data;毫无意义。你本来打算做*(n->data) = data;的。

编辑:正如T.C.在评论中指出的,这个解决方案假设您确实为node::data分配了空间。一个更清洁的解决方案是将node::data变成这样的int

struct node {
int priority;
int data;
node *next;
node *prev;
};

现在,您不需要更改DLList::addNoden->data = data会正常工作。

好吧,我现在错过了它,感觉有点傻!感谢所有发表评论的人。问题是数据被声明为int *data,我从数据中删除了*,代码现在可以工作了!谢谢大家的回复,我为这个愚蠢的问题道歉。。。