闪亮的马路 发表于 2020-11-26 19:54:35

c++类中一个成员函数作为另一个成员函数的的参数

c++类中一个成员函数作为另一个成员函数的的参数,怎么写?这是是否就是回调函数?

test.h
class a
{
public:
a();
~a();
void b();
void c();


};

test.cpp
a::a(){}
a::~a(){}
a::b(c){}
a::c(){}

报错是这样:
error: invalid use of non-static member function

闪亮的马路 发表于 2020-11-26 20:05:21

不采用定义静态成员函数的方法

xieglt 发表于 2020-11-26 20:06:52

这样的函数必须是静态函数
static voidc ();

闪亮的马路 发表于 2020-11-26 20:19:48

xieglt 发表于 2020-11-26 20:06
这样的函数必须是静态函数
static voidc ();

静态函数无法调用其他非静态成员,无法多实例,是否还有其他办法?

xieglt 发表于 2020-11-27 06:18:42

给静态函数传一个类指针参数不就实现多实例了吗?

xieglt 发表于 2020-11-27 08:57:18

本帖最后由 xieglt 于 2020-11-27 08:59 编辑

闪亮的马路 发表于 2020-11-26 20:19
静态函数无法调用其他非静态成员,无法多实例,是否还有其他办法?

#include <iostream.h>

class test
{
public:
        test();
        ~test();

public:
        static void _stdcall a(void * t);
        void b(void (_stdcall * Function)(void *));

private:
        void c(void);

};

test::test()
{

}

test::~test()
{

}

void test::a(void * t)
{
        test * p = reinterpret_cast<test *>(t);
        p->c();
}

void test::b(void (_stdcall * Function)(void *))
{
        Function(this);
}

void test::c()
{
        cout << "This is a callback function!";
}

int main()
{
        test t;
        t.b(test::a);
        return 0;
}
页: [1]
查看完整版本: c++类中一个成员函数作为另一个成员函数的的参数