2013-10-07 27 views
0

我正在尋找和停留在及格等級和結構情況的問題作爲參數傳遞給使用boost::bind如何將類/結構實例作爲參數傳遞給使用boost :: bind的回調函數?

回調函數到目前爲止回撥使用this method工作正常。 我想下面顯示的代碼中使用網頁摘要

class A 
{ 
    public : 
    static int i = 1; 

}; 

不過,我想這個類實例傳遞給下面

void Init(void (*Notify)(A *a, int, int,int),int arr[], 
      A *a, value,int left,int right) 
{ 

} 
+1

你能發佈你無法編譯的特定代碼行嗎?目前還不清楚你的意思是說「我想把這個類實例傳遞給這個回調函數指針」。 –

回答

0

不能使用升壓綁定直接做描述這個回調函數指針這個。你Init函數需要一個指向具有這種特徵的自由功能:

void (*)(A *a, int, int, int) 

所以,你可以實現一個這樣的:

void foo(A *a, int x, int y, int z) 
{ 
    a->whatever(x, y, z); 
} 

你會再調用Init(foo, ...)

但它必須是一個免費的功能;稍微等效的升壓綁定表達式將不起作用:

boost::bind(&A::whatever, _1, _2, _3) 

爲什麼不能正常工作?因爲Init需要一個免費功能,所以不需要例如。一個boost::function<void(A*,int,int,int>)>這將支持boost::bind

相關問題