C 根據傳入的函式指標來解析需要的引數

2022-06-06 08:09:11 字數 1232 閱讀 6397

c++可以根據傳入的函式指標,獲取自己需要的引數型別,然後根據引數源中獲取需要的引數,這裡我用tuple作為演示,不過,只要可以根據序號,或者順序方式等獲取實參,都可以使用類似的方式實現:

先給出乙個輔助函式:

/*

* 獲取第n個型別

*/template

struct

select

;template

struct

select

: public

select

;

下面給出實際的實現函式:

#include #include 

"vs-help.h

"class

tuplefunc

//函式的實際構造過程

template void makefuncandparams(ret(*func)(args...), paramssource¶msource)

//實際呼叫

void

invoke()

private

:

//實際呼叫初始化

template void makefuncandparamsimpl(func&& func, select, paramssource& paramsource, params&&...args)

//結束呼叫

template void makefuncandparamsimpl(func&& func, select

<>, paramsource& paramsource, params&&... args);}

private

: std::function

m_func;

};

下面是測試用例:

void print(int x, std::string

y)int

main()

; tuplefunc func;

func.makefuncandparams(&print, p);

func.invoke();

return0;

}

通過使用lambda表示式,我們可以很方便的構建乙個我們呼叫時需要的函式,而模板的存在,可以使我們在構建乙個lambda表示式的時候,可以動態化,使某些情況下,更加靈活的構建各類處理函式map等。上面只是簡單的演示,具體場景下,需要進行一定的修改。

C 指向類成員函式的指標詳細解析

首先 函式指標是指向一組同型別的函式的指標 而類成員函式我們也可以相似的認為,它是指向同類中同一組型別的成員函式的指標,當然這裡的成員函式更準確的講應該是指非靜態的成員函式。前者是直接指向函式位址的,而後者我們從字面上也可以知道 它肯定是跟類和物件有著關係的。typedef int p int,in...

C 委託所蘊含的函式指標概念詳細解析

原則 1 函式指標,實際上是函式編碼後的指令在記憶體中的首程式設計客棧位址,在c c中,這個位址可以用函式名直接使用 乙個函式呼叫另乙個函式的時候,就可以把被呼叫函式以函式指標的形式作為引數傳入 2 函式callback使用的技術就是函式指標 函式就好像是乙個中斷處理函式,系統在符合你設定的條件時自...

C 學習第二天 根據彙編來理解物件導向指標的本質

問題 指標是如何對物件導向裡的物件進行操作的呢 下面舉個例子 struct person int main 以下是通過c 語言反彙編的得到的組合語言 mov dword ptr ebp 14h 0ah mov dword ptr ebp 10h 1 mov dword ptr ebp 0ch 2 不...