クラス型の PRIVATE 変数で必要なコンストラクターがありません。
PRIVATE 節はスレッドごとの一時変数を効率良く作成します。変数がクラス型の場合、宣言はデフォルト・コンストラクターを使用して実行されます。そのため、あいまいでない、可視性のあるデフォルト・コンストラクターがなければなりません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
OpenMP* の使用方法に関するエラー |
変数が PRIVATE として指定された場所 |
#include <stdio.h> #include <omp.h> // Note: this class has no default constructor class myClass { int m_myInt; public: explicit myClass(int x) { m_myInt = x; } void set(int x) { m_myInt = x; } int get() { return m_myInt; } }; myClass a(110); int main(int argc, char **argv) { int i; omp_set_num_threads(3); // INCORRECT: a has no accessible default constructor #pragma omp parallel for ordered private(a) for (i = 1; i < 10; i++) { a.set(i); #pragma omp ordered printf("i = %d, #threads = %d, a = %d\n", i, omp_get_thread_num(), a.get() ); } return 0; }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。