2011-09-08 37 views
1

調用成員函數我有這樣的代碼:如何使用函數指針的特定對象

#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; 
} 

這可能嗎?

+0

爲什麼匿名downvote? – Felics

+2

這充分覆蓋在一百現有職位時,[FAQ](http://stackoverflow.com/questions/tagged/c%2b%2b),和[函數指針教程](HTTP://www.newty .de/fpt/index.html),所以也許有人認爲你只是懶惰而不知道如何在Google中輸入任何內容。我,我徹底的腐敗和喜歡的聲譽;-) –

+0

我會同意,但我已經做了,現在約20倍,節省時間,所以+1取消投票了:對@ –

回答

3

你IKE在此稱之爲:

(obj->*func)(42); 

是因爲「應用函數調用」在提領-PTM ->*操作的優先級所需要的第一組括號。

您還可以使用std::bind

std::function<void(int)> my_f = std::bind(func, obj, std::placeholders::_1); 

my_f(43);