簡體   English   中英

Visual C ++ - 匿名方法

[英]Visual C++ - anonymous methods

嗨有沒有辦法在Visual C ++中使用匿名方法?

Visual C ++ 2010支持C ++ 0x lambda表達式, (1)可以用作匿名函數:

int i = ([](int x) { return 40 + x; })(2); // i = 42

(1)更確切地說,Visual C ++ 2010支持C ++ 0x lambda表達式的草案規范之一; 自從Visual C ++ 2010發布以來,對該規范草案進行了一些相對較小的更改。

正如其他人所說,C ++ 0x將支持lambda。 在此期間,您可以使用Boost Lambda

如果您不能像其他人所建議的那樣使用C ++ 0x,那么您嘗試做的事情有很多方法可以在某種程度上模仿,但不能完全捕獲匿名方面:

template<typename T>
void foo(const T& _someFunctor, double _someArgument){
    _someFunctor(_someArgument);
}

或者你可以有一個更好的定義結構:

int bar(const boost::function<int(double,double)>& _aFunction, double arg1, double arg2){
    return _aFunction(arg1+2.0, arg2+2.0);
}

Boost :: Function方法可能是最方便的,因為它定義了一個非常嚴格的函數接口,同時允許使用:

  1. 的boost ::綁定
  2. 職能
  3. 成員職能
  4. 仿函數(函數類似對象)

我假設你的意思是C ++ / CLI,匿名方法是C#術語。 不,不支持。 它也不支持C ++ 0x lambdas。

是的,C ++ 0x允許lambda函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM