1.1 在deleclass定義tfunction
tfunction<
void
(fstring)
> tfunone;
//繫結tfunone的函式
void
regfunone
(tfunction<
void
(fstring)
> targetfun)
1.2 在receclass宣告並定義要執行的函式void receclass:
:echoinfoone
(fstring infostr)
1.3 在receclass將要執行的函式繫結到tfunctiondeleclass:
:regfunone([
this
](fstring infostr)
);
1.4 執行流程:
receclass呼叫deleclass::regfunone,利用lambda生成乙個函式指標作為引數傳入
deleclass執行regfunone,將獲取到的函式指標賦值給tfunone,此時tfunone已經有具體函式例項
實現類中特定函式的動態繫結
2.1 在deleclass定義接收函式的委託以及繫結函式
//宣告乙個無引數最簡單的靜態委託
declare_delegate
(fwde_single_zero)
/** 繫結其他類中的函式
* @param tarobj 要繫結函式的類的例項
* @param inmethod tarobj中某個類void(fstring,int32)函式的指標
*/template<
class
userclss
>
void deleclass:
:regfuntwo
(userclass* tarobj,
typenametmemfunptrtype<
false
,userclass,
void
(fstring,int32)
>
::type inmethod)
2.2在receclass執行繫結函式void receclass:
:echoinfotwo
(fstring infostr,int32 count)
deleclass-
>
regfuntwo
(this
,&afwreceactor:
:echoinfotwo)
;
2.3 執行流程
receclass呼叫deleclass::regfuntwo,並將自身以及需要繫結的函式傳入
deleclass定義乙個0引數委託,並利用binduobject繫結regfuntwo傳入的函式
執行委託物件
缺點:只能在繫結時傳入引數而不是在執行時
3.1 在deleclass定義接收函式的委託以及繫結函式
//宣告乙個無引數最簡單的靜態委託
declare_delegate_twoparams
(fwde_single_two,fstring,int32)
template<
class
userclss
>
void deleclass:
:regfunthree
(userclass* tarobj,
typename fwde_single_two:
:tuobjectmethoddelegate
::fmeshodptr inmethod)
3.2 在receclass執行繫結函式void receclass:
:echoinfothree
(fstring infostr,int32 count)
deleclass-
>
regfuntwo
(this
,&afwreceactor:
:echoinfothree)
;
3.3 執行流程
receclass呼叫deleclass::regfunthree,並將自身以及需要繫結的函式傳入
deleclass定義乙個0引數委託,並利用binduobject繫結regfuntwo傳入的函式
執行委託物件
1.1 在deleclass宣告並定義泛型介面
template<
class
delegatetype
,class
userclass
, typename.
.. vartypes>
void
regfunfour
(userclass *tarobj,
typename delegatetype:
:templete tuobjectmethoddelegate
::fmethodptr inmethod,
vartypes.
.. vars)
1.2 在receclass中使用該泛型介面declare_delegate_twoparams
(ftempdele,fstring,int32)
/** tempdele 確定委託型別
* echoinfotwo 要繫結的函式
* fstring("")/56 傳入的引數
*/deleclass-
>regfunfour
(this
,&receclass:
:echoinfotwo,
fstring
("regfunfour"),
56);
2.1 在deleclass中宣告並定義介面template.. vartypes>
void deleclass:
:regfunfive
(tfunction<
rettype
(vartypes...
)> tarfun)
2.2 在receclass中宣告並定義介面bool receclass:
:echoinfothree
(fstring infostr,int32 count)
//呼叫該介面
deleclass-
>regfunfive([
this
](fstring infostr,int32 count)
);
UE4 C 語言動態陣列
ue4 c 語言動態陣列 在實際的程式設計中,往往會發生這種情況,即所需的記憶體空間取決於實際輸入的資料,而無法預先確定。對於這種問題,用靜態陣列的辦法很難解決。為了解決上述問題,c語言提供了一些記憶體管理函式,這些記憶體管理函式結合指標可以按需要動態地分配記憶體空間,來構建動態陣列,也可把不再使用...
UE4 C 的const類成員函式
我們知道,在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如 const char blank blank n 錯誤 要宣告乙個const型別的類成員函式,只需要在成員函式引數列表後加上關鍵字const,例如 pragma once include includ...
UE4 c 程式設計,最近常用的標頭檔案
ue4 c 程式設計,最近常用的標頭檔案 include 相關類作用 components boxcomponent.h uboxcomponent盒體觸發器 components capsulecomponent.h ucapsulecomponent膠囊觸發器,setcapsulesize co...