• ベストアンサー

C++で参照カウンタを実装したいのですが

こんにちは。 C++でクラスに参照カウンタを実装したいのですが、もしも実装する場合、 class CRefCounter {   参照カウンタとAddRef、Releaseメソッドを仮想メソッドとして実装 }; このクラスを継承して直接使う方法と、 class IRefCounter {   参照カウンタとAddRef、Releaseメソッドを純粋仮想メソッドとして宣言 } このクラスを継承して継承側で実装する方法とがあると思うのですが普通はどちらを使うものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • i-kujou
  • ベストアンサー率50% (13/26)
回答No.3

IRefCounterを基底クラスに CRefCounterを作成して、CRefCounterのAddRef/Releaseを実装する。 そして、CRefCounterを継承して参照カウンターを利用するクラスを実装する、というのはどうでしょうか? 参照カウンターを利用する場合はIRefCounterを経由して操作するようにすれば、複数の実装を共存することも可能になります。

0xEF
質問者

お礼

参考にさせていただきます。ありがとうございました。

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

割付け記憶域期間以外を持つオブジェクトや配列の場合はどう扱い予定なのでしょうか?

0xEF
質問者

お礼

>>割付記憶期間以外を持つオブジェクト というのはnewで確保したオブジェクト以外という意味でしょうか? それはコンストラクタをprivateにすることでCreate系のメソッドを経由させようとしていました。 配列のほうは完全に見落としていました。 自分の実装方法だといろいろ問題があるようですので、また少し考えさせていただきたいと思います。 ありがとうございました。

  • gentoo314
  • ベストアンサー率41% (15/36)
回答No.4

COM の IUnknown インターフェースや、その実装クラスを参考にされてはどうでしょうか。

0xEF
質問者

お礼

回答ありがとうございます。 IUnknownインターフェースは一度見たのですがいまいちよくわからなくて質問させていただいた次第でございます。 勉強不足ですみません。

回答No.2

 こんばんは。  う~ん。  上でも問題無いとは思いますが・・・、私が所有しているCOMの書籍では、下でした。

  • splwtr
  • ベストアンサー率16% (75/461)
回答No.1

参照カウンターは、どの時点で、参照(インクリメント、デクリメント) されるのですか?

0xEF
質問者

補足

回答ありがとうございます。 参照カウンタは自分でAddRefなどを呼び出す予定です。

関連するQ&A