簡體   English   中英

靜態回調函數和非靜態成員

[英]Static callback function and non-static member

我實際上有一個代碼(我無法改變)需要一個靜態函數作為“回調函數”。

當我將函數更改為靜態時,我無法訪問“this”和我的類成員。 另外,我不能將“this”作為參數傳遞給函數,因為我無法更改原始SDK和定義文件,所以我該怎么辦?

我的代碼在一個類中,一個類函數調用一個需要“靜態回調函數”作為參數的函數。 那個“回調函數”還需要訪問“this”和其他類成員來處理。

我能做什么? 我正在使用QT和VS 2012作為編譯器。 謝謝

靜態函數與全局函數是共同的,你無法想象你可以在全局函數中使用“this”,而不是提及類成員......唯一的區別是靜態函數有一個“命名空間”作為被稱為calss名稱。 因此,無論您使用的是什么,或者使用哪種編譯器,您都不能在靜態函數中使用“this”或類成員,它只是語言功能。 你應該像邁克所說的那樣修改你的代碼。

如果您使用現代版本的C ++(11或更早版本),您可以使用std::bind 或者使用boost:bind

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM