C++中出现的错误,求指教

时间:2023-01-24 11:42:23
写个单链表操作的程序,其中:
p = head; 这一行出现错误
no match for 'operator=' in 'p = head' 
p->next = NULL;这一样出现错误
base operand of `->' has non-pointer type `node' 

查了下好像和操作符重载有关?这方面不是太了解,请各位指教

16 个解决方案

#1


重载=运算符

#2


不会吧,贴代码看看

#3


把程序贴出来行不,,谁知道你的p head都是什么东西呀

#4


应该不需要重写赋值操作符;

要看你p和head的具体的类型

#5


引用 3 楼 zhctj159 的回复:
把程序贴出来行不,,谁知道你的p head都是什么东西呀

就是单链表创建的程序~
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

typedef struct student{
  int data;
  struct student* next;
}node;

/*生成单链表*/
node* createList(){
  node* head,p,s;         //头指针和临时指针 
  int data,cycle=1;       
  head=(node*)malloc(sizeof(node));   //为头指针申请内存空间
  p = head;
  while(cycle){
    printf("\nPlease input the data:");
    scanf("%d",&data);
    if(data != 0){
      s=(node*)malloc(sizeof(node));  //新建一个节点
      s->data = data;
      printf("\ndata = %d",data);
      p->next=s;
      p=s; 
    }esle{
      cycle = 0;
    }
  }
  head = head->next;
  p->next = NULL;

 return head;
}

#6


引用 4 楼 lianshaohua 的回复:
应该不需要重写赋值操作符;

要看你p和head的具体的类型

指向结构体的指针
typedef struct stu{
   .........................
}node;

#7


引用 1 楼 yujun_82 的回复:
重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 

#8


引用 7 楼 isaac198518 的回复:
Quote: 引用 1 楼 yujun_82 的回复:

重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 


c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,

如果是结构体的话 ,就不能直接用 等于号 这些的了!

#9


引用 8 楼 max_min_ 的回复:
Quote: 引用 7 楼 isaac198518 的回复:

Quote: 引用 1 楼 yujun_82 的回复:

重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 


c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,

如果是结构体的话 ,就不能直接用 等于号 这些的了!

以前写过类似的程序没问题的 都是指向结构体的指针 不能赋值么

#10


node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

#11


引用 10 楼 zhctj159 的回复:
node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...

#12


引用 11 楼 isaac198518 的回复:
Quote: 引用 10 楼 zhctj159 的回复:

node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...



C++中出现的错误,求指教

#13


引用 11 楼 isaac198518 的回复:
Quote: 引用 10 楼 zhctj159 的回复:

node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...
你回复好快啊

#14


10楼++ C++中出现的错误,求指教

#15


10楼真的好细心啊,佩服,自己真心看不出来

#16


引用 15 楼 andylfg 的回复:
10楼真的好细心啊,佩服,自己真心看不出来

没想到还犯了这错误...好了  给大家散分!

#1


重载=运算符

#2


不会吧,贴代码看看

#3


把程序贴出来行不,,谁知道你的p head都是什么东西呀

#4


应该不需要重写赋值操作符;

要看你p和head的具体的类型

#5


引用 3 楼 zhctj159 的回复:
把程序贴出来行不,,谁知道你的p head都是什么东西呀

就是单链表创建的程序~
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

typedef struct student{
  int data;
  struct student* next;
}node;

/*生成单链表*/
node* createList(){
  node* head,p,s;         //头指针和临时指针 
  int data,cycle=1;       
  head=(node*)malloc(sizeof(node));   //为头指针申请内存空间
  p = head;
  while(cycle){
    printf("\nPlease input the data:");
    scanf("%d",&data);
    if(data != 0){
      s=(node*)malloc(sizeof(node));  //新建一个节点
      s->data = data;
      printf("\ndata = %d",data);
      p->next=s;
      p=s; 
    }esle{
      cycle = 0;
    }
  }
  head = head->next;
  p->next = NULL;

 return head;
}

#6


引用 4 楼 lianshaohua 的回复:
应该不需要重写赋值操作符;

要看你p和head的具体的类型

指向结构体的指针
typedef struct stu{
   .........................
}node;

#7


引用 1 楼 yujun_82 的回复:
重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 

#8


引用 7 楼 isaac198518 的回复:
Quote: 引用 1 楼 yujun_82 的回复:

重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 


c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,

如果是结构体的话 ,就不能直接用 等于号 这些的了!

#9


引用 8 楼 max_min_ 的回复:
Quote: 引用 7 楼 isaac198518 的回复:

Quote: 引用 1 楼 yujun_82 的回复:

重载=运算符

为嘛c++这么麻烦 记得C语言里写这个没有问题啊 


c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,

如果是结构体的话 ,就不能直接用 等于号 这些的了!

以前写过类似的程序没问题的 都是指向结构体的指针 不能赋值么

#10


node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

#11


引用 10 楼 zhctj159 的回复:
node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...

#12


引用 11 楼 isaac198518 的回复:
Quote: 引用 10 楼 zhctj159 的回复:

node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...



C++中出现的错误,求指教

#13


引用 11 楼 isaac198518 的回复:
Quote: 引用 10 楼 zhctj159 的回复:

node* head,p,s;         //头指针和临时指针 
这句不对,应该写作:
node *head,*p,*s;

啊 对!是这里出问题了...你真细心...
你回复好快啊

#14


10楼++ C++中出现的错误,求指教

#15


10楼真的好细心啊,佩服,自己真心看不出来

#16


引用 15 楼 andylfg 的回复:
10楼真的好细心啊,佩服,自己真心看不出来

没想到还犯了这错误...好了  给大家散分!