2012-01-05 2 views
0

개인 도서관 관리 프로젝트가 있습니다. 나는 Media의 Derivate 클래스리스트와 Person리스트를 가지고 있습니다. 나는 Media의 인스턴스와 Person의 인스턴스를 참조하는 Loan의 목록을 가져야합니다. 클래스 Loan에서 두 개의 포인터를 사용하여 구현했습니다. 문제는 사용자가 MediaPerson 목록의 인스턴스를 삭제할 수 있어야한다는 것입니다. 내 질문에, 사용자가 그것을 삭제하지 못하도록 해당 인스턴스를 가리키는 Loan이 없음을 확인하려면 어떻게해야합니까? 경우에 따라 Loan 클래스를 구현하는 더 좋은 방법을 제안 할 수도 있습니다.개인 라이브러리 프로젝트, 어떻게 해결할 수 있습니까?

필요한 경우 프로젝트 구조에 대한 자세한 정보를 제공합니다. 이것은 C++ OO 입문 과정을위한 프로젝트이므로 너무 진보 된 기술을 사용하지 않는 것이 좋습니다.

+0

std :: shared_ptr <> – vivek

답변

0

매우 간단한 C++ 코드를 사용하려면이 방법을 사용해야합니다. 모든 대출을 반복하여 삭제하려는 사람이나 미디어에 대한 대출이 없는지 확인하십시오.

또는 개인 및 미디어가 대출에 대한 참조를 보유하게 만들 수있는 개인 및 미디어의 인스턴스를 차용이 참조하는 것처럼. 이 접근법의 한 가지 장점은 미디어 항목이 이미 대여되어있을 때 쉽게 감지 할 수 있다는 점입니다. 사람이 둘 이상의 미디어 항목을 대출 할 수 있고 미디어 항목이 반환 될 때 더 많은 정리 작업이 필요하다는 복잡성이 있습니다.

+0

간단한 참조 계산 시스템을 구현했습니다 :'Media'와'Person' 클래스는 생성되고 파괴 될 때'Loan' 인스턴스에 의해 증가되고 감소되는'int' 카운터를 가지고 있습니다. 프로그램이 Media 인스턴스를 제거하려고 할 때이 카운터를 검사하고> 0이면 사용자에게 경고합니다. 괜찮 니? – Pincopallino

0

참조 계산 및 공유 포인터. 입문 과정에서 허용되는 것은 의심 스럽지만 말입니다. 따라서 다중 참조를 피하기 위해 디자인을 재검토해야한다고 제안합니다.

+0

기본 참조 계산을 어떻게 구현합니까? – Pincopallino

관련 문제