2013-09-24 1 views
0

Я просто попытался создать решатель sudoku, используя C++ (с базовым C), используя связанный список machanism. Делая что я получил ошибку какпреобразование из 'node *' в нескалярный тип 'node', запрошенный в 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); 
} 

ответ

1

Здесь:

lastnodeaddr=addnode (i,lastnodeaddr); 

lastnodeaddr является указателем на node, но addnode возвращает node по значению.

-1

В addnodelastpos является указателем на node и вы возвращаете &lastpos что означает двойной указатель как node** но addnode объявляется вернуть node по значению, следовательно, ошибка.

+0

Тип немного медленнее и меньше ошибки-у следующего раза: P –