如何在C ++中为对象分配非静态函数?

时间:2018-12-13 22:09:42

标签: c++ function class inheritance polymorphism

我制作了一个Window类,希望拥有一个可变函数,因此,如果我不想使用默认函数,可以在外部更改该函数。在标题中:

function<LRESULT(HWND, UINT, WPARAM, LPARAM)> handleMsg = DefWindowProc;

所以目标是能够在课堂外更改handleMsg。效果很好,直到我想在新功能中使用this为止:

LRESULT handleMsg(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg) {
        case WM_CHAR: {
            this->eventBuffer.push(new Event(
                WM_CHAR,
                static_cast<unsigned char>(wParam)
            ));
        }

        default: {
            return DefWindowProc(hwnd, msg, wParam, lParam);
        }
    }
}
// main
window->handleMsg = handleMsg;

如果我不使用this,则该代码有效。我尝试将函数包装在继承Window一个(class MyWindow : Window)的类中,然后尝试:

MyWindow *myWindow = new MyWindow;
window->handleMsg = myWindow->handleMsg;

,但我得到error C3867: 'MyWindow::handleMsg': non-standard syntax; use '&' to create a pointer to member。我想与Window类进行交互,而不是与派生类进行交互,因为我为Window类设计了更多代码。有解决方案吗?

0 个答案:

没有答案