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

conversion from 'node*' to non-scalar type 'node' requested in C++

本文关键字:node 转换 标量型 请求 C++      更新时间:2023-10-16

我只是尝试使用链表机制使用 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);
}

在这里:

lastnodeaddr=addnode (i,lastnodeaddr);

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

> In addnode lastpos 是指向node的指针,您返回&lastpos这意味着双指针作为node**addnode被声明为按值返回node,因此出错。