[英]Error when trying to call a function in main.
我试图在我试图从C转换为C ++的程序中的main中调用一个函数。 我在其他函数中进行的所有函数调用均编译无误,但是当它到达主函数中的一个函数调用时,我no matching function for call to contacts::menu(contacts*[5], int*, int&, char[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
的指针数组contacts**
要将函数与当前签名一起使用,您需要将friends
数组声明为
contacts* friends = new contacts[5];
要么
contacts friends[5];
在后一种情况下,将数组传递给函数将起作用,因为它将衰减到函数期望的contacts*
。 后一种情况比较可取,因为您不必担心在第一种情况下使用new
释放创建的内存
不要使用指针
int main()
{
contacts friends[5];
然后您的代码就会编译。
菜单功能预计contacts*
作为第一个参数,而你正在试图通过contacts*[]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.