QT,C++成員函數作爲C風格函數的函數參數的問題。函數指針的問題。MQTT。

          最近在用QT包裝一個Paho - MQTT C Cient的函數接口(調用MQTT的C的SDK來實現一個對接onenet平臺的軟件用QT實現)時遇到一個。這是bug模塊的C函數實現:http://www.eclipse.org/paho/files/mqttdoc/MQTTAsync/html/publish.html

    問題:C++類的成員函數可以作爲C函數的函數參數來調用嗎?

    來看看編譯的bug提示




    顯然在C語言中函數是全局可見的,函數名就是代碼區的首地址,在編譯時,該地址空間就會被開闢。那麼在代碼調用時肯定可以用,但是呢C++的成員函數沒有實例化之前是沒有開闢內存的,那麼這樣調肯定是不行的。


解決:經過不斷的百度,找資料終於找到了解決辦法就是把被當做回調函數聲明爲靜態函數。


這樣就解決了。

當然這只是其中的一種方法,還有更好的方法可以在評論區留言一起討論哈!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章