2009-06-26 21 views
1

Wikipediaは、C++ 0xが匿名機能をサポートすると言えます。ブーストもサポートしているようです。しかし、.NETを使用しているので、それに固執すると素晴らしいでしょう。C++ .NETで匿名関数を使用することはできますか?

基本的には、オブジェクトのクイックコードを書いています。私は約85〜90の州を持つことができるロボットを持っています。ほとんどの状態は単なる「ロボットマイクロコントローラに渡される整数値」です。そこで私はロボットに状態35に行くように指示します。

しかし、一部の州ではユーザー入力などの追加操作が必要なので、単純にしておき、違いのコードをほんの数行書きたいと思います。私は派生クラスの使用を検討しましたが、いくつかの行を変更するだけのコードがたくさんあります。

答えて

-1

Lambda Expressionsまたは代理人とも呼ばれる匿名関数は、C#の言語機能であり、.NETフレームワークの一部ではありません。私はマイクロソフトがmanaged-C++に匿名関数を追加したとは思わないし、commentsが私に同意するようだ。

しかし、心配しないでください。あなたが言及したように、Boost.Lambdaはあなたが使用できる素晴らしいライブラリです。いいのは、ヘッダとして完全にテンプレートとして実装されていることです。したがって、ヘッダーを含めるだけです。規格に準拠したC++コンパイラは、それをサポートする必要があります。私はあなたがすでに持っているものに固執したいと思っていますが、これらのヘッダーをダウンロードして使用するための努力は、実際には最小限に抑えるべきです。

Boostを使いたくない場合は、C#を試してみることもできますが、Boost Lambdaライブラリを試してみることをおすすめします。おそらくあなたが考えるよりも簡単です。

+0

新しいバージョンのC++標準ではラムダ式もありますが、少し奇妙です。 –

+0

C++がラムダ式を取得していることを知ってうれしいです。しかし、私がこの質問に3ヶ月前に答えたとき、それは明らかではありませんでした...少なくとも私にとってはそうではありませんでした。 –

0

C++/NETでは、C++/CLIを意味する場合はyesです。 MSがC++コンパイラでC++ 0xのラムダ式をサポートすると、そのサポートはC++/CLIにも拡張されます。ラムダ式を今度はにしたい場合は、Boost.Lambdaが残っています。

0

C++ 0xラムダ関数は、VC2010のリリースでC++/CLIで使用できます。ただし、これらはネイティブのC++オブジェクトであり、C++/CLI代理人として使用することはできません。また、.NETハンドルを渡すにはgcroot<>を使用する必要があります。

関連する問題