写代码时,不小心将一个子类的以private的方式继承了一个抽象父类。使用的时候,实例化了这个子类的一个对象,但是无法通过dynamic_cast安全的转化为父类的对象来使用,如下:
这里TcpWorker以private的方式继承ITcpImpl实际上是个手误,本意是class TcpWorker: public IWorker, public ITcpImpl 的。
当将private继承方式改成public时,断言就成功了。
文章详细介绍了在C++中错误地将子类以私有方式继承抽象父类导致的类型转换失败问题,并提供了修复方法。
写代码时,不小心将一个子类的以private的方式继承了一个抽象父类。使用的时候,实例化了这个子类的一个对象,但是无法通过dynamic_cast安全的转化为父类的对象来使用,如下:
这里TcpWorker以private的方式继承ITcpImpl实际上是个手误,本意是class TcpWorker: public IWorker, public ITcpImpl 的。
当将private继承方式改成public时,断言就成功了。

被折叠的 条评论
为什么被折叠?