5
我有下面的类:数据成员
Class L{
public:
bool foo(vector<bool> & data);
private:
C** cArray;
}
并希望并行化在函数foo循环被创建L的对象和所有中的元素之后somtime称为cArray被初始化。
bool L::foo(vector<int> & data){
int row, col;
#pragma omp parallel shared(SIZE, cArray, data) private(row, col)
for (row=0, row<SIZE; ++row)
{
for (col=0; col<SIZE; ++col)
{
cArray[row][col].computeScore(data);
}
}
}
但这给出一个错误: 错误C3028:“L :: CARRAY”:只有一个变量或静态数据成员可以在数据共享子句中使用。
有没有什么可以做这个假设我不想让cArray静态?
你可以显示声明SIZE的位置吗? – 2011-05-05 01:22:08
只能在数据共享条款中指定变量。不要把它放到一个子句中,它应该默认共享,并且应该工作。 – ejd 2011-05-05 01:31:19
@Mr Fooz - SIZE在包含的.h文件中声明为const。 – ryguy 2011-05-05 01:53:23