在这种情况下,指针是否会与预期不同?
Will the pointer ever be different than expected in this case?
假设我有一个Listener类。
我有类A和类M,它们都实现侦听器类。A班有4个M。
每个M都有一个A,但不是作为A,作为侦听器基类。(所以把A降序,因为M对A一无所知)
当A从其中一个M处收到消息时,它需要知道是哪个M发送的。
因此,Listener类中的每个方法都有一个Listener*形参。
所以如果我有这样的东西:
void A::someListenerMethod(Listener* l, MsgEnum msg)
{
if(l == m_mInstance[0])
{
//will this work if the caller was indeed the M instance in question?
}
}
所以本质上我要问的是,在比较它们之前,我是否需要将M向下转换为侦听器?
我读到有时c++会为一个子类做一个单独的对象来进行多重继承。在这种情况下没有多重继承,但我想确保这将工作。
谢谢
会如你所愿。
实际上,为了进行比较,m_mInstance[0]
将隐式地转换为Listener*
,以便类型匹配。if (l == (Listener*)(m_mInstance[0])) ...
将编译成相同的目标代码。这通常不会产生开销,除非您有多重继承,在这种情况下,它可能会产生最小的开销。
相关文章:
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 在这种情况下,java对象是否可以调用本机函数
- 在这种情况下显式调用时,std::cout 如何更改析构函数的行为?
- 在这种情况下,我真的复制了字节还是复制了字符?
- 为什么在这种情况下,bool 类型的输出等于 0?
- 在这种情况下,如何传递成员函数而不是函数?
- 为什么在这种情况下递增阵列名称有效?
- 在这种情况下我应该使用哪种设计模式
- 在这种情况下,当尝试从单独的类更新变量时,我是否需要使用指针?
- 在这种情况下,删除指针数组期间会发生什么?
- 在这种情况下,我将如何继续 1 到 360 的"for loop"处理指针和地址?
- 在这种情况下,我是否需要使用指针
- 在这种情况下,我应该使用智能指针吗?
- 在这种情况下,我可以重复使用指针吗?
- 在这种情况下,智能指针weak_ptr绑定到shared_ptr
- 在这种情况下,圆形指针可以吗?
- 在这种情况下,指针是否会与预期不同?
- 在这种情况下我应该使用什么智能指针
- 在这种情况下,我应该删除指针吗?
- 如何在这种情况下使用智能指针