0
class Person {
    ...
};

class Book {
private:
    ...
    Person *person;
    ...
public:
    ...
    Person *getPerson() {return person;}

    void setPerson(Person *_person) {person = _person;}
    ...
};

class Library {
private:
    vector<Book> books;
    vector<Person> people;
public:

    vector<Book> getBooks() {return books;}
    vector<Person> getPeople() {return people;}
    void addBook(Book _book) {//adds a Book to books}
    void addPerson(Person _person) {//adds a Person to people}
    bool checkOut(Person *_person, Book *_book) {
        if (_book->getPerson() == NULL ) {
            _book->setPerson(_person);
            return true;
        }
        else {
            return false;
        }
    }

int main() {

    Library lib("My Library");

    Book b1("The C Programming Language", "Brian Kernighan and Dennis Ritchie");
    Book b2("Unknown Title", "Unknown Author");
    Book b3("Burning Daylight", "Jack London");

    Person p1("John");
    Person p2("Peter");
    Person p3("Ann");

    lib.addPerson(p1);
    lib.addPerson(p2);
    lib.addPerson(p3);

    lib.addBook(b1);
    lib.addBook(b2);
    lib.addBook(b3);

    lib.checkOut(&lib.getPeople().at(1), &lib.getBooks().at(1));

    return 0;
}

プログラムが実行されます。setPerson を Book クラスのコンストラクターに入れると、機能します。Library クラスから checkOut メソッドを呼び出しても機能しないのはなぜですか? true を返すのに、checkOut メソッドが Book クラスで Person を設定しないのはなぜですか? 何がわからないのですか?ありがとうございました!

4

1 に答える 1