簡體   English   中英

使用類成員函數作為回調

[英]Using class member function as Callback

在PortAudio的C ++綁定中,有一個MemFunCallBackStream構造函數,可以調用為:

portaudio::MemFunCallbackStream<MyClass> streamRecord(paramsRecord, 
                                                     *AnInstanceOfMyClass,
                                                     &MyClass::MemberFunction);

其中最后一個參數是回調函數。 但是,如果不在參數編譯器上使用&運算符,則會失敗 但據我所知,參數在獲取函數指針中使用的函數地址時是可以省略的。 這與C回調函數和ptr有什么不同。 到了。 句法?

這個常見問題解答似乎表明你可以省略& (至少對於靜態成員函數),但接着給出了為什么不應該將普通函數指針與C ++成員函數指針混淆的各種原因。

編輯在這里找到更多信息,這與非靜態成員函數有關:

一些編譯器 (最值得注意的是MSVC 6和7) 會讓你省略 & ,即使它是非標准和令人困惑的。 更多符合標准的編譯器(例如,GNU G ++和MSVC 8(又名VS 2005)) 需要它 ,所以你一定要把它放進去。要調用成員函數指針,你需要提供SomeClass的一個實例,你必須使用它特殊運算符->* 此運算符的優先級較低,因此您需要將其放在括號中。 [強調補充]

C ++標准在其關於一元運算符的部分中指出,指向成員的指針需要顯式使用&。

暫無
暫無

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

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