1. 程式人生 > >QT中類的成員函式作為回撥函式

QT中類的成員函式作為回撥函式

    這裡主要實現的功能:需要設計一個外掛,把外掛內的資料通過函式指標引數的方式傳遞到另外一個類中,顯示出來,使用回撥函式的方式

http://blog.csdn.net/ksn13/article/details/40538083,程式碼的邏輯和上述網站的第三種方法一樣,可以呼叫但是資料無法傳遞。

最後在測試幾天的情況下,終於找到最終的解決方法:bind與function的使用:

1.首先看bind和function的定義和使用:

     然後你要詳細的知道C++模板類,C++模板類有很多的型別形參來統一化,可以讓編譯器通過一種類,或者函式處理不同的引數需求。

看過上面三篇文章你可以深入的知道function和bind的原理。其實function是解決了普通函式和類成員函式的統一委託。客戶端不需要去關心委託的是普通函式還是類成員函式!

2.具體的操作:

類A :a.h

typedef std::function<void(int a)> Func;

void getValue(int a);
void get(Func c);

Func f;

a.cpp

void A::getValue(int a)
{
f(a);
}
void A::get(func c)
{
f=c;
}

在widget類裡面定義一個回撥函式,進行bind轉換,作為get的傳入引數,即可。