ホームページ  >  に質問  >  本文

c++中,再将链表头指针赋给一个临时指针时报错

#include<iostream>
using namespace std;
class Linklist
{
public:
    struct node                     //声明链表结点的结构体
    {
        int a;
        struct node *next;
    };                                   
    struct node*head;
    void addnode();     //添加结点
    Linklist(void);
    ~Linklist(void);
};

Linklist::Linklist(void)
{
    head=NULL;
}


Linklist::~Linklist(void)
{
}

void Linklist::addnode()        //添加结点的函数实现                   
{
    struct node *temp=new struct node [1];
    if(head==NULL)
    {
        head=temp;
        head->next=NULL;
    }
    else
    {
        temp->next=head;
        head=temp;
    }
}                                                                         


int main()
{
    Linklist a;
    struct node *temp=NULL;            //申请一个struct node类型的指针
    a.addnode();                       //创建一个结点
    temp=a.head;                   //将头指针赋给一个临时的指针,这时候就报错了
    system("pause");
    return 0;
}

在倒数第四行,“temp=a.head”处报错,说“不能讲Linklist::node类型的值分配到node类型的实体”

阿神阿神2764日前516

全員に返信(2)返信します

  • PHPz

    PHPz2017-04-17 11:49:02

    cppstruct Linklist::node *temp=NULL;
    

    node是在Linklist内部声明的

    返事
    0
  • 阿神

    阿神2017-04-17 11:49:02

    struct node *temp=NULL;中的node是一个为空的构造体,跟Linklist中的node不是同一个.它等价于:

    struct node
    {
    ....
    }
    node *temp = NULL;
    

    返事
    0
  • キャンセル返事