我有两个类,Base
和 Derived
。我有一个存储 Derived*
指针列表的容器。
当 Base 对象被销毁时,有一个信号/槽机制发出信号,此时我们在 ~Base
析构函数中,因此 RTTI 不可用于转换 Base *
到 Derived*
(这是使用 Qt,但问题不是 Qt 特定的)
该信号连接到管理指针容器的插槽。你可能已经猜到了,我想检查对象被销毁的 Base*
指针是否对应于存储在容器内的 Derived*
指针,如果是,则删除它从容器中取出。
我知道有很多替代设计,例如不使用QObject::destroyed()
信号,或者存储QObject*
列表而不是派生*
。但出于许多实际原因,我想使用那个。
这意味着,我想将基指针转换为派生指针,不是为了解除引用,而是为了取消跟踪指针,并且我希望无论子类树是什么(包括多重继承、虚函数...... .).
我可以为此使用 static_cast 吗?
谢谢!
最佳答案
在评论中,您写道:
comparing the cast pointer to a table Derived* pointers for removing it. Of course I will not dereference the cast pointer.
在这种情况下,根本不需要转换,你可以直接比较你的指针:
Base* base;
Derived* derived;
if(base == derived) {
}
关于c++ - 如何从 Base 析构函数中将 Base* 与 Derived* 列表进行匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37522558/