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的动态链接。