我有一个关于多重继承演员的问题.我有3个基类
class ReadFile;
class WriteFile
class SharedObject; // this class is basically a mutex
Run Code Online (Sandbox Code Playgroud)
基于我构建的那些课程:
class ReadWriteFile : public ReadFile, public WriteFile
{ ... };
class ReadWriteSharedFile : public ReadWriteFile , public SharedObject
{ ... };
class ReadFileShared : public ReadFile, public SharedObject
{ ... };
Run Code Online (Sandbox Code Playgroud)
在我的代码的某些方面,我有一个ReadWriteSharedFile指针,我想把它作为指向ReadFileShared的指针
ReadFileShared * l_data = dynamic_cast<ReadFileShared * >(m_data); // m_data is a ReadWriteSharedFile
Run Code Online (Sandbox Code Playgroud)
它编译但在执行时,强制转换"失败"并且l_data为NULL
但是,我想要达到的目标听起来对我来说是合法的.是吗?我究竟做错了什么.谢谢
ReadFileShared
并且ReadWriteSharedFile
是不相关的类,尽管它们继承了一些相同的基类.因此,您不能将引用/指针转换为彼此.
你的功能也许应该使用接口ReadFile
和WriteFile
,而不是需要特定的实现它们.这是接口背后的主要思想.有关更多详细信息,请参阅C++接口类 - 简介.