没有匹配函数来调用'node :: node()'

时间:2015-08-01 03:19:23

标签: c++

我正在创建并显示单链表。 但是主函数

出错

没有用于调用'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;
}

当我使用朋友类节点编写相同的程序时,程序成功执行。 为什么我们需要使用多个课程?

1 个答案:

答案 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定义没有任何参数(也就是默认构造函数)的另一个构造函数。