通过函数地址调用另一个类的函数

calling function of another class through its function address

本文关键字:函数 另一个 地址 调用      更新时间:2023-10-16

我试图通过函数的地址调用另一个类的函数。我有两个类CA和CB

CA有一个类似

的方法
void CA :: CreateList()
{
    m_pWindow = DEBUG_NEW CA;
    if(! m_pWindow ->Create(_T("CListsdbb"),NULL,WS_CHILD|WS_VISIBLE|LVS_ICON|LVS_SINGLESEL                          , CRect(0, 0, 0, 0), this, NULL))
    {
        TRACE0("Falied to create list window");
        return;
    }
}

m_pWindow是CWnd*类型CA的属性。

我有另一个类CB。我试着调用这个函数

空白CreateList ();

void CB :: OnBtn(void)
{
    &CA::CreateList;
    MessageBox(_T("Hello world"), _T("Information"),  MB_OK);
}

但是函数没有调用。CA是集装箱船CB的所有人。

有谁能帮我解决这个问题吗

这一行没有调用任何东西,它只是给出了函数的地址。在c++中,指向成员函数并调用它的指针是这样的:

void (CA::*func_pointer)() = &CA::CreateList;
CA a;
a->*func_pointer();

是的,语法是迟钝的,有一段时间,我记得在我桌子上的Stroustrup页面中讨论了这个功能,因为我必须经常查找它(基本上每次我使用它)。

但是我离题了——我应该提到的是,在2014年你真的不应该再使用这个了;使用一个信号/插槽,将抽象为您。

此外,从你的例子中,我不确定CB应该如何访问CA的实例,也不确定CA是集装箱船上CB的所有者。的意思。