2012-01-05 64 views
0

私はこの個人的な図書館管理プロジェクトを持っています。私はMediaとリストPersonの派生クラスのいくつかのリストを持っています。またMediaのインスタンスとPersonのインスタンスを参照するLoanのリストが必要です。私はクラスLoanの2つのポインタを使ってこれを実装しました。 問題は、ユーザーがMediaPersonのリストのインスタンスを削除できる必要があります。私の質問は、ユーザーがそれを削除するのを防ぐために、そのインスタンスを指しているLoanがないことを確認するにはどうすればいいですか? この場合、Loanクラスを実装するより良い方法を提案することもできます。パーソナルライブラリプロジェクト、どのようにこれを解決するには?

私は、必要に応じてプロジェクトの構造に関する詳細情報を提供します。 これは初心者のC++ OOコースのプロジェクトだと考えていますので、あまりにも高度な技術の使用は避けてください。

+0

std :: shared_ptr <> – vivek

答えて

0

非常にシンプルなC++コードを使いたい場合は、これを実現する方法がいくつかあります。すべてのローンをループして、削除しようとしている人物やメディアに該当していないことを確認できます。

また、LoanがPersonとMediaのインスタンスを参照するのと同じように、PersonとMediaにもLoanへの参照を保持させることができます。このアプローチのメリットの1つは、Mediaアイテムがすでにローンに入っていることを簡単に検出できることです。Personがローン上に複数のMediaアイテムを持つ可能性があり、Mediaアイテムが返されたときに行うハウスキーピングがさらに多いという複雑な問題があります。

+0

私は単純な参照カウントシステムを実装しました。 'Media'クラスと' Person'クラスには 'Loan'インスタンスがインクリメント/デクリメントされるintカウンタがあります。プログラムがMediaのインスタンスを削除する場合、このカウンタをチェックし、0より大きい場合は警告を出します。大丈夫ですか? – Pincopallino

0

参考カウントと共有ポインタですが、これは入門コースでは受け入れられません。したがって、私はあなたのデザインを複数の参照を避けるために再訪するべきであることを示唆したいと思います。

+0

基本的な参照カウントはどのように実装しますか? – Pincopallino

関連する問題