Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"var": az "initonly" adattag l-értékének használata közvetlenül nem engedélyezett párhuzamos régión belül a "class" osztályban
Megjegyzések
Az initonly (C++/CLI) adatmező nem inicializálható a konstruktor olyan részén belül, amely párhuzamos régióban található. Ennek az az oka, hogy a fordító elvégzi a kód belső áthelyezését, így gyakorlatilag már nem része a konstruktornak.
A megoldáshoz inicializálja a initonly data tagot a konstruktorban, de a párhuzamos régión kívül.
Example
Az alábbi példa C3899-et hoz létre.
// C3899.cpp
// compile with: /clr /openmp
#include <omp.h>
public ref struct R {
initonly int x;
R() {
x = omp_get_thread_num() + 1000; // OK
#pragma omp parallel num_threads(5)
{
// cannot assign to 'x' here
x = omp_get_thread_num() + 1000; // C3899
System::Console::WriteLine("thread {0}", omp_get_thread_num());
}
x = omp_get_thread_num() + 1000; // OK
}
};
int main() {
R^ r = gcnew R;
System::Console::WriteLine(r->x);
}