我有以下两个函数:
void RegisterSink( ISink & Sink )
void UnregisterSink( ISink & Sink )
其中 ISink 是一个抽象基类。在内部,我想将指向接收器的指针存储在 std::set 中。当接收器未注册时,我只需在我的集合中搜索指针,然后将其删除。我的问题是,有什么方法可以使参数 Sink 的地址产生不同的结果,尽管将同一个对象作为参数传递。我知道,在某些多重继承场景中进行强制转换时,指针可能会发生变化,但这种情况呢?
提前致谢!
最佳答案
如您所说,在具有多重继承的虚拟类之间进行转换时,指针地址可能会发生变化。但是,在您的情况下,静态类型始终相同:ISink
因此可以保证比较此静态类型的两个点是安全的,并产生可重现的结果。
关于c++ - 根据对父类(super class)的引用确定对象标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1307547/