5

(これは、「C ++ / CXのC#Windowsランタイムコンポーネントから返されたコレクションを反復処理するにはどうすればよいですか?」と表現することもできます。

で使用しようとしstd::for_eachましたIIterable<T>が、次のコンパイル時エラーが発生します

エラーC2664:'std :: begin':パラメータ1を'my_collection_type^'から'Platform :: String ^'に変換できません。ユーザー定義の変換演算子が使用できないか、指定された型が無関係です。変換には、reinterpret_cast、Cスタイルのキャスト、または関数スタイルのキャストが必要です

コレクションを反復処理するにはどうすればよいですか?

4

3 に答える 3

10

これを機能させるには、追加する必要があります

#include "collection.h"

(およびオプションで)

using namespace Windows::Foundation:Collections

ソースファイルに。

次に、次のようにコレクションを反復処理できます。

for_each (begin(my_collection), 
          end(my_collection), 
          [&](my_collection_type^ value) {
          // code goes here...
});

using namespace std注:(の)も必要になる場合がありますfor_each

于 2012-06-17T20:52:43.360 に答える
4

C++/CX で Windows ランタイム コンポーネントを記述する場合、C# のような構造を使用できます。

for each (auto item in collection)
{
    item->DoSomething();
}
于 2015-08-31T08:23:58.377 に答える