1樓:暗能量泡泡
C++不能支援直接在函式中定義函式。C++11通過支援Lambda函式(實際上是個匿名class的物件)來實現類似功能。其他方式可以使用函式中定義struct/class的方式再定義其靜態成員函式的方式來模擬一樣的效果。
2樓:Johnny Wong
可以使用class/struct的實現,它們支援巢狀定義,我提供乙個最簡單的版本
void foo(int n)
{ struct funcvoid operator () (int nstd::cout << "func " << n << std::endlfunc;
for (int i=0; i
如果使用更加高階的實現的話,可以參考
boost::function
如果沒有耐心,直接使用 c++ 11 lambda.
直接支援函式巢狀定義的標準,好像還沒有;至於一些編譯器和擴充套件庫實現的,思路和上文舉例類似。
3樓:陳良喬
#include
using namespace std;
void foo()
{/* error!
void innerfoo()
{cout<<"inner function"<如上面的例子所示,無法直接在函式內部定義另外乙個函式
但是,可以採用函式物件或者Lambda表示式間接地實現
4樓:Cascade
你說的這種巢狀定義標準沒說可以有。所以不是不能有。
某些編譯器作為擴充套件功能支援函式的巢狀定義。
由於類可以巢狀定義,所以你可以定義乙個類,然後寫乙個過載()的方法進去。
C++11說,你可以用lambda function。
C 中的sort函式使用自定義比較函式的具體執行過程是怎麼樣的呢
路明非 你只是覺得實現降序排序比較神奇,但對於演算法來說都是一樣的。對於函式bool f a,b a b 只要任意兩個數字滿足自洽性就可以了,所謂自洽性就是如果a b返回true,b c返回true,則a c一定返回true。當然還要其他條件,這樣可以保證你的輸入序列的有序性。演算法唯一需要做的就是...
C 中如何定義指向函式指標的指標?
zr scat 瀉藥先定義乙個函式指標 typedef void pfn void 再定義指向函式指標的指標 void print void pfn func print pfn ptr func 在c 11下,可以這麼偷懶獲得型別 1 include 23using namespace std 4...
在C 中如何實現復合多個函式的高階函式
guohc FuncCombinator的引數不固定所以只能傳入delegate的陣列。static void Main string args static Func FuncCombinator Delegate da TResult result TResult param return re...