我有一个涉及虚拟函数、多重继承但不涉及虚拟继承的类层次结构。整个层次结构根植于一个基类B。一个类最多出现在层次结构中。
现在,我正在使用一个图书馆,我只能在那里传递和接收 void*(基本上是一些“句柄”)。
在什么情况下在我的层次结构实例和 void*?
我应该B*在过去之前总是向上看吗void*吗,反之亦然?
将(D*) (B*) (void*) (B*) d等于difd是 的实例D*和D的子类B?
您必须void*转换为与您void*开始转换的完全相同的类型。这保证是安全的。从void*铅到 UB 的其他演员。
一旦你有一个非空指针,类层次结构的指针的正常转换规则就适用。
使用你的例子,
(D*) (B*) (void*) (B*) d
Run Code Online (Sandbox Code Playgroud)
可以,但是
(D*) (void*) (B*) d
(B*) (void*) d
Run Code Online (Sandbox Code Playgroud)
不是。
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |