Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'var' : o uso do valor L do membro de dados initonly não é permitido diretamente dentro de uma região paralela na classe 'class'
Observações
Um membro de dados initonly (C++/CLI) não pode ser inicializado dentro da parte de um construtor que está numa região paralela. Isso ocorre porque o compilador faz uma realocação interna desse código, de modo que, efetivamente, ele não faz mais parte do construtor.
Para resolver o problema, inicialize o membro de dados initonly no construtor, mas fora da região paralela.
Example
O exemplo a seguir gera 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);
}