私はクラス Message のオブジェクトを持っています。これは、書き込みとその後の更新が可能です。私が見る限り、MessageUpdate IS-A MessageWrite:
class MessageWrite
{
protected:
void setVersion(int version_) {...}
void setReceiveTime(int tmReceive_) {...}
Message _msg;
};
class MessageUpdate:public MessageWrite
{
//ONLY setVersionShould be accessible here, NOT setReceiveTime
};
これを達成するのに役立つメソッドアクセスレベルと継承レベルの組み合わせはありますか?
MessageUpdate を単純に基本クラスにすることができることは知っていますが、問題があります。メッセージクラスを拡張したい場合に備えて、ダイヤモンドパターンにつながります。検討:
class MessageUpdate {...};
class MessageWrite: public MessageUpdate {...};
//Now, while extending:
class AdminMessageUpdate:public MessageUpdate {...};
class AdminMessageWrite: public AdminMessageUpdate, public MessageWrite //DIAMOND Pattern!!
継承に関する私の理解のギャップはどこにありますか? また、多重継承なしでこのロジックを実現するまったく別の方法はありますか (後者のコード部分に示されています)。