OpenMP私有类实例变量

时间:2018-03-05 07:12:41

标签: c++ openmp

我正在使用OpenMP,我在Windows VC ++ 13中将变量设置为私有。这些变量是类实例。该类是一个复杂的类,包含指针,其他类的实例,嵌套和深层。我可以确定所有内容都适当地提供给线程的私有副本吗?

此外,我无法将类实例设为私有,它不会链接,它说

 error LNK2019: unresolved external symbol "public: __cdecl ClassName::ClassName(void)" (??0ClassName@@QEAA@XZ) referenced in function ...

1 个答案:

答案 0 :(得分:0)

声明为private的变量是非私有副本。它的初始值是,好像它是在没有初始化程序的情况下在本地声明的。因此,对于class,它是默认构造的。该标准明确要求

A variable of class type (or array thereof) that appears in a private clause requires an accessible, unambiguous default constructor for the class type.

您的错误消息只是告诉您它已丢失。

也许您将privatefirstprivate混淆,后者实际上是从并行区域之外的原始值初始化。对于那些,您需要一个复制构造函数。代码的正确性取决于正确实现的复制构造函数。