Ошибка при попытке вызвать функцию в main.

Я пытаюсь вызвать функцию в моем main в программе, в которой я пытаюсь конвертировать из C в C ++. Все мои вызовы функций внутри других функций компилируются без ошибок, но когда он доходит до вызова одной функции в основном, я получаю 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.

0

Решение

Не используйте указатели

int main()
{
contacts friends[5];

и ваш код скомпилируется.

3

Другие решения

Вот проблема

 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

7

функция меню ожидает contacts* в качестве первого аргумента, пока вы пытаетесь передать contacts*[]

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector