Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
'var' : použití initonly datového členu l-hodnota není povoleno přímo v paralelní oblasti ve třídě 'class'
Poznámky
Datový člen initonly (C++/CLI) nelze inicializovat uvnitř této části konstruktoru , který je v paralelní oblasti. Důvodem je, že kompilátor provádí interní přemístění tohoto kódu, tak, že již není součástí konstruktoru.
Pokud chcete tento problém vyřešit, inicializujete initonálně datový člen v konstruktoru, ale mimo paralelní oblast.
Příklad
Následující příklad vygeneruje C3899.
// 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);
}