C++ 如何使用特定对象的函数指针调用成员函数
我有以下代码:C++ 如何使用特定对象的函数指针调用成员函数,c++,C++,我有以下代码: #include <iostream> class foo { public: foo(int yy){y = yy;} void f(int x){std::cout<<x;} private: int y; }; void main() { foo* obj = new foo(123); void (foo::*func)(int) = &foo::f;
#include <iostream>
class foo
{
public:
foo(int yy){y = yy;}
void f(int x){std::cout<<x;}
private:
int y;
};
void main()
{
foo* obj = new foo(123);
void (foo::*func)(int) = &foo::f;
//how do I call func with obj as this?
delete obj;
}
#包括
福班
{
公众:
foo(int-yy){y=yy;}
void f(intx){std::cout您这样称呼它:
(obj->*func)(42);
第一组括号是必需的,因为“应用函数调用”优先于解除引用PTM->*
运算符
您还可以使用std::bind
:
std::function<void(int)> my_f = std::bind(func, obj, std::placeholders::_1);
my_f(43);
std::function my\u f=std::bind(func、obj、std::占位符::\u 1);
我的f(43);
之前的100篇帖子中都有这方面的内容,所以可能有人认为你只是懒惰,不知道如何在谷歌中键入任何内容。我,我完全腐败,更喜欢声誉;-)我同意,但我现在已经做了20次,以节省时间,因此+1取消投票:p@w00te:这是一个滑杆就我个人而言,如果答案也很短,我不介意回答一个简洁的问题,而且通常这确实是一个快速的方法。(事实上,整个MySQL部分似乎都是这样工作的。)这个问题可能没有太多的“价值”,因为有容易找到的资源覆盖它,但这是一个确定的问题。我将坚定地保留我的“反对票”在上面:-)