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;
}
프로그램이 실행됩니다. Book 클래스의 생성자에 setPerson을두면 작동합니다. 라이브러리 클래스에서 checkOut 메서드를 호출 할 때 왜 작동하지 않습니까? Book 클래스의 checkOut 메서드 설정 Person이 true를 반환하는 이유는 무엇입니까? 내가 이해하지 못하는게 뭐야? 고맙습니다!포인터 문제, 초보자 예
구체적으로 무엇이 효과가 있습니까? 지금 당신이 얻고있는 결과는 무엇이며 무엇을 기대합니까? –
첫 번째 "문제"는 최신 C++ 프로그램에서 베어 포인터를 사용하고 있다는 것입니다. – WhozCraig
checkout 메서드는 true를 반환하지만 Book 개체의 Person 필드는 설정되지 않습니다. 이 경우 베어 포인터 대신 무엇을 사용해야합니까? 방금 학습을 시작했습니다 :) – user2879175