[英]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.