0

好的,所以我有一个结构,我需要创建一个增加一本书数量的函数。在为每本书调用该函数后,我将调用 printBooks,我可以做得很好。我知道这是一个非常简单的程序,但我只是不能这样做,所以任何帮助表示赞赏

#include <iostream>
using namespace std;

#define BOOKS 3

struct Book
{
    string title;
    string isbn;
    int amount;
} books [BOOKS];

void printBooks(Book b);
void addAmount(Book &book,int amount);


int main()
{
    int i;

    for(int i = 0;i < BOOKS; i++)
    {
        cout << "Enter isbn : ";
        cin >> books[i].isbn;

        cout << "Enter title : ";
        cin >> books[i].title;

        cout << "Enter amount : ";
        cin >> books[i].amount;

    }


    cout << "\nThe number of books after adding amount by one :\n";

    for(i = 0;i < BOOKS; i++)
    {
        addAmount(); // intentionally left blank.don't know what to put
        printBooks(books[i]);
    }

    return 0;
}

void printBooks(Book b)
{
    cout << b.isbn << endl;
    cout << b.title << endl;
    cout << b.amount << endl;
}
void addAmount(Book &book,int amount)
{
    book.amount++;
}
4

2 回答 2

6

您在addAmount();没有参数的情况下调用。你大概是说

addAmount(books[i], 42);

还可以考虑将printBooks签名更改为

void printBook(const Book& b)

或者,更好的是,使它成为一个成员函数。

于 2012-10-16T08:51:47.373 回答
1
void addAmount(Book &book)
{
    book.amount++;
}

进而

addAmount(books[i]);

顺便说一句,您实际上并不需要将结构按值传递给printBooks. 只需使用 const 引用即可。调用代码不需要修改。

void printBooks(const Book &b)
{
    cout << b.isbn << endl;
    cout << b.title << endl;
    cout << b.amount << endl;
}
于 2012-10-16T08:54:11.290 回答