gpt4 book ai didi

指向非静态成员函数的 C++ 函数指针(类成员)

转载 作者:IT老高 更新时间:2023-10-28 12:29:52 24 4
gpt4 key购买 nike

class Foo {
public:
Foo() { do_something = &Foo::func_x; }

int (Foo::*do_something)(int); // function pointer to class member function

void setFunc(bool e) { do_something = e ? &Foo::func_x : &Foo::func_y; }

private:
int func_x(int m) { return m *= 5; }
int func_y(int n) { return n *= 6; }
};

int
main()
{
Foo f;
f.setFunc(false);
return (f.*do_something)(5); // <- Not ok. Compile error.
}

我怎样才能让它工作?

最佳答案

 class A{
public:
typedef int (A::*method)();

method p;
A(){
p = &A::foo;
(this->*p)(); // <- trick 1, inner call
}

int foo(){
printf("foo\n");
return 0;
}
};

void main()
{
A a;
(a.*a.p)(); // <- trick 2, outer call
}

关于指向非静态成员函数的 C++ 函数指针(类成员),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com