如何覆盖嵌套的C++对象方法?

Edw*_*lva 5 c++ methods notifications overriding

我没想出问题的更好标题.让我现在更好地解释一下:

我正在处理的项目是连接到远程服务器,加密会话和发送/接收数据包.我想让它足够模块化,所以我认为使用3个不同的类是很好的.这些将是:

1)带有一些虚方法的套接字包装类,如OnReceivedData()和OnConnected().

2)套接字包装器的继承类,在发送数据之前实现数据加密,并在数据到达时解密数据.

3)主要对象本身,它应该覆盖上述任何一个类,具体取决于它是否需要加密,因此它也可以接收OnReceivedData()和OnConnected()事件通知,并根据它进行操作.

所以问题是如何让我的程序知道它必须首先在加密对象上调用事件然后在主对象上调用相同的事件?因为我想如果我用加密覆盖套接字换行器然后用主对象覆盖加密,它可能只调用主对象方法(它将直接在主对象上调用OnReceivedData(),而不是通过解密对象首先,对吗?).

这称为多重继承吗?

顺便说一句,如果你认为这是一个糟糕的项目设计,我会很感激任何更好的方法.感谢您抽出宝贵时间阅读本文.

Ale*_*ing 2

它不称为多重继承(这是一个类从多个超类继承的情况)。这称为方法重写。在“main”OnReceivedData 中,您可以通过限定其名称 来显式调用“super”方法EncryptedBaseClass::OnReceivedData()

这可能会变得混乱。我建议您反转所有权并让加密类保存对套接字类的引用,这与装饰器模式(具有加密装饰器)一致。这将解决您的覆盖问题,同时仍然为您提供所需的功能。