gpt4 book ai didi

c++ - 尝试调用 main 中的函数时出错。

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:10 24 4
gpt4 key购买 nike

我试图在我试图从 C 转换为 C++ 的程序中调用 main 中的一个函数。我在其他函数中的所有函数调用都没有错误地编译,但是当它到达主函数中的一个函数调用时,我得到 no matching function for call to contacts::menu(contacts*[5], int*, int&,字符[50])'

这是主要的:

int main() {


contacts *friends[5];
char buffer[BUFFSIZE];
int counter=0;
int i=0;

contacts::menu(friends, &counter,i,buffer);

getch();
return 0;
}

这是带有函数声明的类:

class contacts
{
private:
char *First_Name;
char *Last_Name;
char *home;
char *cell;
public:
//constructor
contacts()
{
}

//Function declarations
static void menu(contacts*friends ,int* counter,int i,char buffer[]);
};

这是菜单功能的开始部分,这样您就可以了解它的标签:

void contacts::menu(contacts*friends,int* counter, int i,char buffer[]) 
{
int user_entry=0;
int user_entry1=0;
int user_entry2=0;
char user_entry3[50]={'\0'};
FILE *read;
printf("Welcome! Would you like to import a file? (1)Yes or (2) No");
scanf("%d",&user_entry1);
if(user_entry1==1)
{
printf("Please enter a file name");
scanf("%s",user_entry3);
read=fopen(user_entry3,"r+");

就像我说的,我程序中的其他函数没有收到任何错误,但是这个有。我是 C++ 的新手,所以我不确定是否需要添加一些特殊的东西来调用 main 中的函数。

最佳答案

问题来了

 contacts *friends[5];

你传递给

void contacts::menu(contacts*friends,int* counter, int i,char buffer[]) 

当你将它传递给函数时,你已经声明了一个指向 contacts指针数组,它会衰减到一个 contacts**

要使用带有当前签名的函数,您需要将 friends 数组声明为

contacts* friends = new contacts[5];

contacts friends[5];

在后一种情况下,将数组传递给函数将起作用,因为它会衰减为您的函数所期望的 contacts*。后一种情况更可取,因为您不必担心释放您在第一种情况下使用 new

创建的内存

关于c++ - 尝试调用 main 中的函数时出错。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13488798/

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