1
我有一個基函數如何從參數化的基本函數生成多個函數指針?
int base(const int i, const double &x)
在這個函數中,我認爲i
是一個「參數」(其可以採取預定義的值從0到N-1),而x
我認爲的實際的「參數」(可以取任意值)。我需要的是創建一個函數指針數組int (*pointers[N])(const double &x)
。陣列的每個成員對應於參數i
的不同值,因此每個呼叫pointers[n](x)
應等同於呼叫base(n, x)
。
有沒有辦法實現這個功能?
我一直在試圖教育自己關於函子(這是一種方式去?),最近也研究了std::bind
,但我的理解是,它只適用於C + + 11(我目前不能使用)。
任何建議或代碼片段將是非常有用的。謝謝!
感謝您的回答!....問題如下:不同參數值的數量很大,更重要的是,在編譯時不知道。因此,我不能隨便寫下「p1」,「p2」,「p3」,「f1」等....我需要能夠通過循環來完成命令.... – Chrys 2013-02-21 00:10:20
@Chrys:不幸的是,C++中的函數不是真正的一流對象,並且不能動態地創建函數。如果你可以使用類似函數的對象,這將是微不足道的,但不是原始函數指針。他們只是沒有足夠的狀態。 – 2013-02-21 00:18:43
我需要使用原始指針才能與最初在Fortran中編寫的遺留代碼進行交互,我一直通過C調用它(這本來就是一團糟)......我一直在思考如何使用functor類,其中的調用操作符將鏈接到每個不同的函數,以及一個不同的對象,其中的函數將在循環中通過參數值創建(但是,我不太熟練,不知道如何完全做到這一點) – Chrys 2013-02-21 00:25:01