我正在使用OpenMP,我在Windows VC ++ 13中将变量设置为私有。这些变量是类实例。该类是一个复杂的类,包含指针,其他类的实例,嵌套和深层。我可以确定所有内容都适当地提供给线程的私有副本吗?
它说,我也无法将类实例设为私有,它不会链接
error LNK2019: unresolved external symbol "public: __cdecl ClassName::ClassName(void)" (??0ClassName@@QEAA@XZ) referenced in function ...
声明为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.
您的错误消息只是告诉您它丢失了。
也许你把private
与firstprivate
混淆,qazxswpoi实际上是从并行区域之外的原始值初始化。对于那些,您需要一个复制构造函数。代码的正确性取决于正确实现的复制构造函数。