gpt4 book ai didi

C++ : Restrict method access in derived class

转载 作者:行者123 更新时间:2023-11-30 02:04:51 26 4
gpt4 key购买 nike

我有一个 Message 类的对象,可以写入并随后更新。据我所知,MessageUpdate 是一个 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!!

我对继承的理解差距在哪里?在没有多重继承的情况下,是否有任何完全不同的方法来实现此逻辑(如后一段代码所示)?

最佳答案

只需声明方法:

private:
void setReceiveTime(int tmReceive_);

在基类 MessageWrite 中使用 private 访问说明符。

我的这个回答应该值得一读:

What are access specifiers? Should I inherit with private, protected or public?

关于C++ : Restrict method access in derived class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com