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類的構造函數中,那麼它就可以工作。爲什麼當我從庫類調用checkOut方法時它不工作?爲什麼不是Book類中的checkOut方法設置Person,儘管它返回true?我不明白什麼?謝謝!指針問題,初學者例子
什麼具體不工作?你現在得到的結果是什麼?你期望什麼? –
第一個「問題」是你在現代C++程序中使用裸指針。 – WhozCraig
checkout方法返回true,但Book對象的Person字段不會設置。在這種情況下,我應該使用什麼而不是裸指針?我剛開始學習:) – user2879175