Этот вопрос поднимался несколько раз раньше. Проблема в том, что члены класса не могут быть созданы во время компиляции. Если они используются совместно, проблем не возникает, поскольку переменные по умолчанию совместно используются в OpenMP (если только вы не измените значение по умолчанию на private - чего вы не можете сделать в C - или ничего). Однако, если они определены как частные, то компилятор должен знать, как делать частные копии, и эта информация не всегда доступна во время компиляции.
К сожалению, если вы хотите охватить все свои данные (используя явные условия определения объема данных), что вам следует сделать, то у вас есть проблема. Оперативные предложения могут обрабатывать только переменные, а не члены класса. Отключение их от любого условия определения объема данных работает до тех пор, пока значение по умолчанию остается общим. Если вы хотите, чтобы они были частными, то вам не повезло, и вы должны определить членов данных класса как переменные. К сожалению, поскольку OpenMP не является частью базового языка, я не вижу, чтобы это изменилось в ближайшее время.