C++ 在这种情况下,指针是否会与预期的不同?

C++ 在这种情况下,指针是否会与预期的不同?,c++,C++,假设我有一个聆听者课程 我有一个类A和一个类M,它们都实现了listener类。 A类有4个M 每个M都有1个A作为侦听器基类,但不是作为A。(因为M对A一无所知,所以将A降级) 当A从其中一个M收到消息时,它需要能够知道是哪个M发送的消息 因此,Listener类中的每个方法都有一个Listener*参数 所以如果我有这样的东西: void A::someListenerMethod(Listener* l, MsgEnum msg) { if(l == m_mInstance[0])

假设我有一个聆听者课程

我有一个类A和一个类M,它们都实现了listener类。 A类有4个M

每个M都有1个A作为侦听器基类,但不是作为A。(因为M对A一无所知,所以将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之前,我是否需要向听众低沉地表达m

<>我读到,有时候C++会为多继承的子类做一个单独的对象。在这种情况下没有多重继承,但我想确保它能正常工作


谢谢

它会按照您的期望工作

事实上,为了进行比较,
m_mInstance[0]
将隐式转换为
Listener*
,以便类型匹配<代码>如果(l==(Listener*)(m_mInstance[0])…将编译为相同的目标代码。这通常不会产生开销,除非您有多重继承,在这种情况下,它可能会产生最小的开销