我有以下一对功能:
void RegisterSink( ISink & Sink )
void UnregisterSink( ISink & Sink )
Run Code Online (Sandbox Code Playgroud)
ISink是一个抽象基类.在内部,我想在std :: set中存储指向接收器的指针.当一个接收器未注册时,我只需在我的集合中搜索指针,然后将其删除.我的问题是,有没有办法,采用参数Sink的地址会产生不同的结果,尽管同一个对象作为参数传递.我知道,在某些多继承szenarios中进行转换时,指针可能会发生变化,但这种情况又如何呢?
提前致谢!
正如您所说,在具有多重继承的虚拟类之间进行转换时,指针地址可能会发生变化.但是,在您的情况下,静态类型始终是相同的:ISink因此,比较此静态类型的两个点是安全的,并产生可重现的结果.