从'node *'转换为C ++中请求的非标量类型'node'

时间:2013-09-24 07:06:42

标签: c++ struct nodes

我只是尝试使用链接列表机制使用C ++(使用基本C)创建一个数独求解器。虽然这样做我得到了像

这样的错误
  • 在函数node addnode(int, node*)中:
  • Line 29: error: conversion from 'node*' to non-scalar type 'node' requested
  • 由于-Wfatal-errors而导致编译终止。

在功能node addnode(int, node*)中:

#include <iostream>
using namespace std;

struct node
{
    int cellvalue;
    int cellpos;
    int rowpos;
    int colpos;
    int blockpos;
    node *next;
} cells[81];

struct node addnode (int value,struct node *lastpos)
{
    node *newnode;
    newnode=new node;
    newnode->cellvalue = value;
    newnode->cellpos=value;
    newnode->rowpos=value%9;
    newnode->colpos=value/9;
    newnode->blockpos=0;
    lastpos->next=newnode;
    newnode->next = NULL;
    printf("Value : %d", newnode->cellvalue);
    lastpos=newnode;
    return &lastpos;
}

int main()
{
    int i=0,value;
    node *header, *lastnodeaddr, *lastpos;
    lastnodeaddr=NULL;
    for (i=0;i<81;i++)
        lastnodeaddr=addnode (i,lastnodeaddr);
}

2 个答案:

答案 0 :(得分:1)

下面:

lastnodeaddr=addnode (i,lastnodeaddr);

lastnodeaddr是指向node的指针,但addnode按值返回node

答案 1 :(得分:-1)

addnode lastpos中是指向node的指针,您将返回&lastpos,这意味着双指针为node**addnode为声明按值返回node因此错误。