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

时间:2015-02-13 04:39:02

标签: c++

我正在尝试在C ++中向Dualy链接列表添加元素。我遇到了一个错误,告诉我它无法从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;
}

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

    n->data = data;

以下是节点的结构:

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

2 个答案:

答案 0 :(得分:1)

由于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可以正常使用。

答案 1 :(得分:0)

好吧,我现在因为错过它而感到有些愚蠢!感谢所有评论的人。问题是数据被声明为int *data我从数据中删除了*,现在代码正常工作!谢谢大家的回复,我为这个愚蠢的问题道歉...