1

ウィキペディアによると、C++0x は無名関数をサポートするようです。Boostもそれをサポートしているようです。しかし、私は .NET を使用しているので、それを使い続けることができれば最高です。

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

ただし、一部の状態ではユーザー入力などの追加操作が必要になるため、単純に保ち、違いを示すコードを数行だけ記述したいと思います。派生クラスの使用を検討しましたが、数行を変更するだけで多くのコードが必要になります。

4

3 に答える 3

1

C++.NET が C++/CLI を意味する場合、はい。MS が C++ コンパイラで C++0x ラムダ式をサポートすると、そのサポートは C++/CLI にまで拡張されます。今すぐラムダ式が必要な場合は、Boost.Lambda に行き詰まっています。

于 2009-10-06T20:05:10.753 に答える
0

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

于 2010-09-23T13:44:10.863 に答える
-1

匿名関数は、ラムダ式またはデリゲートとも呼ばれ、C#の言語機能であり、.NETFrameworkの一部ではありません。MicrosoftがマネージC++に無名関数を追加したとは思わないので、私に同意しているように見えるコメントをいくつか見つけました。

ただし、心配する必要はありません。あなたが言ったように、Boost.Lambdaはあなたが使うことができる気の利いたライブラリです。素晴らしいのは、完全にヘッダーにテンプレートとして実装されていることです。したがって、あなたがしなければならないのはヘッダーを含めることだけです。標準に準拠するC++コンパイラはすべてそれをサポートする必要があります。私はあなたがすでに持っているものに固執したいというあなたの願望を理解していますが、これらのヘッダーをダウンロードして使用するのにかかる労力は本当に最小限でなければなりません。

Boostを本当に使用したくない場合は、C#を使用してみることができますが、BoostLambdaライブラリを試すことをお勧めします。思ったより簡単でしょう。

于 2009-06-30T17:51:37.713 に答える