類的成員函數(shù)包括哪些 如何實(shí)現(xiàn)類的成員函數(shù)作為回調(diào)函數(shù)?
如何實(shí)現(xiàn)類的成員函數(shù)作為回調(diào)函數(shù)?如果直接使用C的成員函數(shù)作為回調(diào)函數(shù),會(huì)出現(xiàn)錯(cuò)誤,甚至編譯失敗。錯(cuò)誤是公共C成員函數(shù)意味著傳遞函數(shù)多個(gè)實(shí)例可以共享成員函數(shù),但數(shù)據(jù)成員不同。由于該指針的函數(shù)關(guān)系,當(dāng)回
如何實(shí)現(xiàn)類的成員函數(shù)作為回調(diào)函數(shù)?
如果直接使用C的成員函數(shù)作為回調(diào)函數(shù),會(huì)出現(xiàn)錯(cuò)誤,甚至編譯失敗。
錯(cuò)誤是公共C成員函數(shù)意味著傳遞函數(shù)
多個(gè)實(shí)例可以共享成員函數(shù),但數(shù)據(jù)成員不同。由于該指針的函數(shù)關(guān)系,當(dāng)回調(diào)成員函數(shù)作為回調(diào)函數(shù)安裝時(shí),由于該指針隱含
導(dǎo)致函數(shù)參數(shù)個(gè)數(shù)不匹配,導(dǎo)致回調(diào)函數(shù)安裝失敗。解決這個(gè)問(wèn)題的關(guān)鍵是不要讓這個(gè)指針工作。通過(guò)使用以下兩種典型的技術(shù),我們可以
解決C語(yǔ)言中使用回調(diào)函數(shù)的問(wèn)題,這種方法是通用的,適用于任何C語(yǔ)言
1)不使用成員函數(shù),為了訪問(wèn)類的成員變量,可以使用friend運(yùn)算符,并將函數(shù)描述為C中類的朋友。
2)使用靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)不將此指針用作隱式參數(shù),因此可以將其用作回調(diào)函數(shù)。靜態(tài)成員函數(shù)有兩個(gè)特點(diǎn):一是可以在沒(méi)有類實(shí)例的情況下使用;二是只能訪問(wèn)靜態(tài)成員變量和靜態(tài)成員函數(shù),不能訪問(wèn)非靜態(tài)成員變量和非靜態(tài)成員函數(shù)。由于在C語(yǔ)言中使用class member
函數(shù)作為回調(diào)函數(shù)的目的是訪問(wèn)所有的成員變量和成員函數(shù),否則就沒(méi)有實(shí)際意義。解決方法也很簡(jiǎn)單,就是用static
類指針作為類成員,在創(chuàng)建類時(shí)初始化靜態(tài)指針,如PThis=this,然后通過(guò)回調(diào)函數(shù)中的靜態(tài)指針訪問(wèn)所有成員變量和成員函數(shù)。
此方法僅適用于一個(gè)類實(shí)例的情況,因?yàn)槎鄠€(gè)類實(shí)例將共享靜態(tài)類成員和靜態(tài)成員函數(shù),這將導(dǎo)致靜態(tài)指針指向創(chuàng)建的最后一個(gè)類實(shí)例。為了避免這種情況,我們可以使用回調(diào)函數(shù)的一個(gè)參數(shù)來(lái)傳遞這個(gè)指針,從而實(shí)現(xiàn)數(shù)據(jù)成員的共享。這種方法有點(diǎn)麻煩,這里不再重復(fù)。
C 回調(diào)函數(shù)?
您是否將ReadData用作類的成員函數(shù)?
C應(yīng)該與這種形式的C的函數(shù)指針兼容。它只能是靜態(tài)成員函數(shù)(聲明為靜態(tài))
并且語(yǔ)法是寫(xiě)入它時(shí)錯(cuò)誤消息中的語(yǔ)法,&ctdlg::realdata
但是在這里,您可以在回調(diào)函數(shù)中獲取指針后將其用作puserdata,它基本上等價(jià)于類的成員函數(shù)
它可以是類的靜態(tài)成員函數(shù)
它不能是普通成員函數(shù)
但它通常使用非成員函數(shù)作為回調(diào)函數(shù)。
如何讓C 類的成員函數(shù)作為回調(diào)函數(shù)?
C調(diào)用動(dòng)態(tài)鏈接庫(kù)回調(diào)函數(shù)必須是靜態(tài)函數(shù)。
C是一種基于C語(yǔ)言的面向?qū)ο缶幊陶Z(yǔ)言,應(yīng)用廣泛。C支持多種編程范式——面向?qū)ο缶幊?、泛型編程和過(guò)程編程。最新的正式標(biāo)準(zhǔn)C于2014年8月18日發(fā)布。到目前為止,它是系統(tǒng)開(kāi)發(fā)領(lǐng)域中使用最廣泛的編程語(yǔ)言之一!