Winapi 使用CreateThread调用类函数时出现错误C3867

Winapi 使用CreateThread调用类函数时出现错误C3867,winapi,visual-c++,createthread,Winapi,Visual C++,Createthread,我试图将一个类函数传递给从主函数调用的CreateThread,但出现错误: 错误C3867:“显示::填充矩阵”:函数调用缺少参数列表;使用“&Display::fill_matrix”创建指向成员的指针 fill_matrix()是一个非静态成员函数。因此,它的第一个参数是指向显示类实例的指针。这就是编译器所抱怨的。解决这个问题的常规方法是创建一个静态成员函数并将其传递给CreateThread。这是它想要的: class Display { public: Display();

我试图将一个类函数传递给从主函数调用的CreateThread,但出现错误:

错误C3867:“显示::填充矩阵”:函数调用缺少参数列表;使用“&Display::fill_matrix”创建指向成员的指针



fill_matrix()
是一个非静态成员函数。因此,它的第一个参数是指向
显示
类实例的指针。这就是编译器所抱怨的。解决这个问题的常规方法是创建一个静态成员函数并将其传递给
CreateThread
。这是它想要的:

class Display
{
public:
    Display();

    static DWORD WINAPI fill_matrix_static(void* obj_ptr) {
        Display* display_ptr = (Display*) obj_ptr;
        return display_ptr->fill_matrix();
    }

    DWORD WINAPI fill_matrix();
};
然后这样称呼它:

CreateThread(NULL, 0, fill_matrix_static, (void*) &display, 0, 0);
class Display
{
public:
    Display();

    static DWORD WINAPI fill_matrix_static(void* obj_ptr) {
        Display* display_ptr = (Display*) obj_ptr;
        return display_ptr->fill_matrix();
    }

    DWORD WINAPI fill_matrix();
};
CreateThread(NULL, 0, fill_matrix_static, (void*) &display, 0, 0);