2017-03-10 93 views
1

我有一个内部有数组的类。在这个数组里面,我想把一个函数指针放到一个函数中,该函数与我的insance具有相同的指针。C++指向对象的类成员的指针

class Foo { 
    std::vector <void (*baz)> bar; 
    void baz() {}; 
} 

Foo bundy; 
bundy.bar.push_back (/*???*/); 

这怎么办?我想,当我运行它像&Foo::baz(),baz没有(有效)这个指针或不指向该实例。

什么是好的解决方法?

回答

4

除了存储指向*baz的指针,您可以存储std::function<void()>

然后,你可以存储拉姆达与结合实例:那么

Foo bundy; 
bundy.bar.push_back([&bundy](){ bundy.baz(); }); 

你的类是这样的:

class Foo { 
    public: 
    std::vector<std::function<void()>> bar; 
    void baz() {}; 
}; 
+0

什么是拉姆达?谢谢你的回答;) – ThefrenchSpeedruns

+0

@ThefrenchSpeedruns http://en.cppreference.com/w/cpp/language/lambda – Ceros

+0

@Ceros非常感谢你;) – ThefrenchSpeedruns