我有一个 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!!
我对继承的理解差距在哪里?在没有多重继承的情况下,有没有完全不同的方法来实现这个逻辑(如后面的代码片段所示)?