【问题标题】:conversion from 'node*' to non-scalar type 'node' requested in C++在 C++ 中请求从“节点*”转换为非标量类型“节点”
【发布时间】:2013-09-24 07:06:41
【问题描述】:

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

【问题讨论】:

    标签: c++ struct nodes


    【解决方案1】:

    这里:

    lastnodeaddr=addnode (i,lastnodeaddr);
    

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

    【讨论】:

      【解决方案2】:

      addnode 中,lastpos 是指向node 的指针,而您正在返回&amp;lastpos,这意味着作为node** 的双指针,但addnode 被声明为按值返回node,因此会出现错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-22
        相关资源
        最近更新 更多