c++ - 根据对父类(super class)的引用确定对象标识

标签 c++

我有以下两个函数:

void RegisterSink( ISink & Sink )
void UnregisterSink( ISink & Sink )

其中 ISink 是一个抽象基类。在内部,我想将指向接收器的指针存储在 std::set 中。当接收器未注册时,我只需在我的集合中搜索指针,然后将其删除。我的问题是,有什么方法可以使参数 Sink 的地址产生不同的结果,尽管将同一个对象作为参数传递。我知道,在某些多重继承场景中进行强制转换时,指针可能会发生变化,但这种情况呢?

提前致谢!

最佳答案

如您所说,在具有多重继承的虚拟类之间进行转换时,指针地址可能会发生变化。但是,在您的情况下,静态类型始终相同:ISink 因此可以保证比较此静态类型的两个点是安全的,并产生可重现的结果。

关于c++ - 根据对父类(super class)的引用确定对象标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1307547/

相关文章:

c++ - 应该将 operator<< 实现为友元还是成员函数?

c++ - 我怎样才能把一个三 channel 的垫子变成一个总结的单 channel 垫子?

c++ - 析构函数调用以前从未构造过的对象

c++ - 获取 Qt 对象的大小

c++ - 未解析的外部符号?

c++ - OpenCV 无法使用 Qt 打开相机

c++ - 如何在循环中使用多维字符或字符串数​​组

C++14线程/条件变量误解

c++ - 引用在运行时确定大小的数组

C++ 运行时效率