我正在创建并显示单链表。 但是主函数
出错没有用于调用'node :: node()'
的匹配函数以下是我的代码:
#include <iostream.h>
using namespace std;
class node
{
node *next,*start,*ptr;
int data;
public:
node(int d)
{
data=d;
next=NULL;
start=NULL;
ptr=NULL;
}
void create();
void display();
};
void node::create()
{
int d;
char ch;
node *temp;
do
{
cout<<"Enter data";
cin>>d;
temp=new node(d);
if(start==NULL)
{
start=temp;
}
else
{
ptr=start;
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
ptr->next=temp;
temp->next=NULL;
}
cout<<"\nDo you want to enter more data?";
cin>>ch;
}while(ch=='y'||ch=='Y');
}
void node::display()
{
ptr=start;
while(ptr->next!=NULL)
{
cout<<"\n"<<ptr->data;
ptr=ptr->next;
}
cout<<"\n"<<ptr->data;
}
int main()
{
node n;
int c;
char a;
do
{
cout<<"*****MENU*****";
cout<<"\n1.Create \n2.Display";
cout<<"\nEnter your choice";
cin>>c;
switch(c)
{
case 1:
n.create();
break;
case 2:
n.display();
break;
default:
cout<<"\nInvalid choice";
break;
}
cout<<"\nDo you want to continue?";
cin>>a;
}while(a=='y'||a=='Y');
return 0;
}
当我使用朋友类节点编写相同的程序时,程序成功执行。 为什么我们需要使用多个课程?
答案 0 :(得分:2)
对于您的类node
,您只定义了一个接受参数类型int
的构造函数,这意味着您可以使用此参数构造此类的实例,您在此处执行的操作:
temp=new node(d); // fine, you pass int d to construct node
但是在main()
中,您尝试创建不带任何参数的类node
的实例:
int main()
{
node n; // <---- problem
所以要么在n
中创建main()
时传递整数,要么为类node
定义没有任何参数(也就是默认构造函数)的另一个构造函数。