C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
私はあまり詳しくありませんが、下記のやり方でビルドできました。
- Visual Studio 2026 (18.7.2)
- [プロジェクト テンプレート] … CLR コンソールアプリ(.NET Framework)
下記の修正をしました。(2026/7/2)
- #include "pch.h"は不要なので削除しました。
- function は非同期に処理されるため、Listに要素を追加する処理は競合するため単純なfor文に置き換えました。
- typedef は使わないように修正しました。
#include "pch.h"
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Threading::Tasks;
typedef List<int>^ datatype_t;
ref struct mystruct {
List<datatype_t>^ m_a;
public:
mystruct(List<datatype_t>^ dst) {
m_a = dst;
}
void function(int number) {
List<int>^ numbers = gcnew List<int>();
numbers->Add(10 + number);
m_a->Add(numbers);
}
void function2(datatype_t d) {
for (int j = 0; j < d->Count; j++) {
System::Console::WriteLine(
System::String::Format("d[{0}] = {1}", j, d[j]));
}
}
};
int main(array<System::String ^> ^args)
{
List<datatype_t>^ List0 = gcnew List<datatype_t>(10);
mystruct^ plfor = gcnew mystruct(List0);
Parallel::For(
0,
10,
gcnew Action<int>(plfor, &mystruct::function)
);
Parallel::ForEach<datatype_t>(
List0,
gcnew Action<datatype_t>(plfor, &mystruct::function2)
);
return 0;
}
- using namespace で必要な名前空間を読み込んでおく。
- typedef でアイテムの型を定義しておく。
- mystruct でデータと関数を定義しておく。
- Parallel::ForEachで指定するアクションをmystructの関数で定義している。
下記の記事を参考にしました。
C++CLIでParallel::For | ぬの部屋(仮) https://suzulang.com/ccli%e3%81%a7parallelfor/.
huahi11115 さんが期待しているコードではないかもしれませんが、ご参考までに