функция не принимает 1 аргумент ошибки

Я много раз пытался исправить эту ошибку, но я не уверен, что делать. И для функций addBooks, и для displayBooks я получаю ошибку «функция не принимает 1 аргумент», хотя вектор должен быть только одним аргументом.

struct bookStruct
{
char title[40];
char author[40];
int pages;
int year;
};

enum menu { display=1, add, end} ;

void displayOptions();
void displayBooks();
void addBooks();

int main(){

vector<bookStruct> book(1);
string option = "display";

displayOptions();
cin >> option;

//std::strcpy(book[0].title, "a");
//std::strcpy(book[0].author, "a");
//book[0].pages = 0;
//book[0].year = 0;

while (option != "end"){
addBooks(book);
displayBooks(book);
}

return 0;
}

void displayOptions(){

cout << "1. Display list of books" << endl;
cout << "2. Add books" << endl;
cout << "3. Exit" << endl;

}

void displayBooks(vector<bookStruct> book){
for (int n = 0; n<book.size(); n++){
cout << book[n].title << " ; " <<  book[n].author << " ; "<< book[n].pages << " ; " << book[n].year <<endl;

}

cout << endl;
}

void addBooks(vector<bookStruct> book){
int n = book.size()+1;
book.resize(book.size()+1);
cout << "Enter the book title: " << endl;
cin >> book[n].title;
cout << "Enter the author name: " << endl;
cin >> book[n].author;
cout << "Enter the number of pages: " << endl;
cin >> book[n].pages;
cout << "Enter the publication year: " << endl;
cin >> book[n].year;
}

0

Решение

И то и другое addBooks а также displayBooks не принимать аргументов

void displayBooks();
void addBooks();

все же вы звоните им с аргументами:

addBooks(book);
displayBooks(book);

Компилятор говорит вам это своими словами.

Похоже, вам нужно

void displayBooks(vector<bookStruct> book);
void addBooks(vector<bookStruct> book);

хотя более вероятно, что вам не нужно копировать векторы в функции:

void displayBooks(const vector<bookStruct>& book);
void addBooks(const vector<bookStruct>& book);

Заметка у вас есть определения однопараметрических функций после main(), main() Функция учитывает только объявления, которые приходят до Это.

3

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

void displayBooks();
void addBooks();

не принимать параметры, однако вы прошли book в них компиляция не может найти обе функции. следовательно, ошибка.

1

void displayBooks();

должно быть

void displayBooks(vector<bookStruct> book);

но в качестве лучшего подхода вы можете использовать:

void displayBooks(const vector<bookStruct> &book);

Так что вектор книги не копируется при передаче в метод DisplayBooks

1

Ваша функция объявлена ​​как

void addBooks();

но ты звонишь с

addBooks(book);

Компилятор явно считает странным, что у вас нет аргумента в объявлении, а затем попробуйте вызвать его с аргументом.

Мне трудно советовать, что именно вам следует делать, поскольку из кода, который вы опубликовали, неясно, что такое «правильная» вещь.

0
По вопросам рекламы [email protected]