プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

C++でクラスに参照カウンタを実装したいのですが、もしも実装する場合、

class CRefCounter
{
  参照カウンタとAddRef、Releaseメソッドを仮想メソッドとして実装
};

このクラスを継承して直接使う方法と、

class IRefCounter
{
  参照カウンタとAddRef、Releaseメソッドを純粋仮想メソッドとして宣言
}

このクラスを継承して継承側で実装する方法とがあると思うのですが普通はどちらを使うものでしょうか?

A 回答 (5件)

IRefCounterを基底クラスに CRefCounterを作成して、CRefCounterのAddRef/Releaseを実装する。


そして、CRefCounterを継承して参照カウンターを利用するクラスを実装する、というのはどうでしょうか?

参照カウンターを利用する場合はIRefCounterを経由して操作するようにすれば、複数の実装を共存することも可能になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/18 00:12

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

    • good
    • 0
この回答へのお礼

>>割付記憶期間以外を持つオブジェクト

というのはnewで確保したオブジェクト以外という意味でしょうか?
それはコンストラクタをprivateにすることでCreate系のメソッドを経由させようとしていました。

配列のほうは完全に見落としていました。
自分の実装方法だといろいろ問題があるようですので、また少し考えさせていただきたいと思います。
ありがとうございました。

お礼日時:2008/10/18 00:09

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

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2008/10/18 00:11

 こんばんは。



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

参照カウンターは、どの時点で、参照(インクリメント、デクリメント)


されるのですか?

この回答への補足

回答ありがとうございます。

参照カウンタは自分でAddRefなどを呼び出す予定です。

補足日時:2008/10/15 19:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!