C++ std::唯一的_ptr和内部类型约束 我有

C++ std::唯一的_ptr和内部类型约束 我有,c++,c++11,unique-ptr,C++,C++11,Unique Ptr,模板类,比如 template <typename T> class CHDF5Raster { public: CHDF5Raster(); ~CHDF5Raster() { if (m_Writing) { status = H5Fflush(m_H5File, H5F_SCOPE_GLOBAL); if (status < 0)

模板类,比如

template <typename T> 
class CHDF5Raster
{
   public:
       CHDF5Raster(); 
       ~CHDF5Raster()
       {
          if (m_Writing)
          {
            status = H5Fflush(m_H5File, H5F_SCOPE_GLOBAL);
            if (status < 0)
            ....
          }
       }
       ....
}
在我定义的代码中

std::unique_ptr<CHDF5Raster<int>[]>    raster;
在另一个地方,由于代码的动态性

m_pCatchRasterR8.reset(new  CHDF5Raster<int> [DYNAMIC_NUMBER]);
又好又甜。一切都很好

但是现在我跑了

编辑

忘了提及我使用的是Microsoft VC 2012编译器和Intel Composer 2013。 两者产生相同的结果

我得到了什么 链接错误

错误1错误LNK2019:未解析的外部符号 在函数public中引用:\ uu cdecl CHDF5Raster::~CHDF5Rastervoid ??1?$CHDF5Raster@H@@QEAA@XZ

H5Fflush上的链接错误,这是链接库的一个函数。库调用中还有其他链接错误这不是唯一的错误,为了简单起见,我省略了它们

问题: 为什么在动态数组上定义std::unique_ptr后会出现链接错误,而没有它,一切都会很好

如何解决这个问题


听起来你没有和图书馆联系。您是如何链接的,以及您是如何指定链接库的?@MikeSeymour:如果我的代码在没有应用std::unique_ptr的情况下实际编译、运行并生成正确的结果,我怎么能不链接到它?可能您没有unique_ptr的代码永远不会删除对象,因此不会调用析构函数和库函数。您是如何链接的,以及您是如何指定链接库的?尽管如此,还是要显示它。问题可能出在标准库中,也可能出在唯一的\u ptr文件中。@MikeSeymour:我从项目属性中使用了通过xxx.lib的动态链接。