gpt4 book ai didi

C++ - 没有要调用的匹配函数

转载 作者:行者123 更新时间:2023-11-28 05:56:16 25 4
gpt4 key购买 nike

我正在制作一个单链表:

#include <conio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

struct node
{
int a;
struct node *ptr;
};

node::node(int p) : {}

struct node *head;

void create(int d)
{
if(head==NULL)
{
head->a=d;
head->ptr=NULL;
}
else
{
struct node* temp =(struct node*) malloc(sizeof(struct node));
temp=head;
while(temp==NULL)
temp=temp->ptr;
temp->a=d;
temp->ptr=NULL;
}

}

void display()
{
struct node* temp =(struct node) malloc(sizeof(struct node));
temp=head;
while(temp==NULL)
{
cout<<temp->a<<" --> ";
temp=temp->ptr;
}
cout<<endl;
}

int main()
{
head=NULL;
create(5);
create(6);
create(8);
display();
return 0;
}

当我尝试编译它时出现此错误:

..\linkedlist.cpp: In function 'void display()':
..\CPP\linkedlist.cpp:36:61: error: no matching function for call to 'node::node(void*)'
..\CPP\linkedlist.cpp:8:1: note: candidates are: node::node()
..\CPP\linkedlist.cpp:8:1: note: node::node(const node&)

现在,我是编码方面的菜鸟,当我用谷歌搜索这个问题时,我发现必须构造一个默认构造函数。我知道如何创建构造函数,但不知道如何创建成员初始化列表构造函数。

最佳答案

这是使用 C++11 修复的完全损坏的代码。它仍然在退出时泄漏内存(你永远不会删除节点),但是:

#include <iostream>

using namespace std;

struct node
{
node(int a)
: a(a)
, ptr(nullptr)
{}

int a;
node *ptr;
};

node* head = nullptr;

void create(int d)
{
if (head == nullptr)
{
head = new node(d);
}
else
{
node* last = head;
while (last->ptr != nullptr)
{
last = last->ptr;
}
last->ptr = new node(d);
}
}

void display()
{
node* temp = head;
while (temp != nullptr)
{
cout << temp->a << " --> ";
temp = temp->ptr;
}
cout << endl;
}

int main()
{
create(5);
create(6);
create(8);
display();
return 0;
}

请注意,g++ 需要 -std=c++11 才能编译代码。

关于C++ - 没有要调用的匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com