我正在尝试使用std::unique_ptr
删除程序。这是我的代码:unique_ptr与删除程序
template<class T>
struct Deleter
{
void operator()(T* p)
{
delete[] p;
}
};
void Test()
{
vector<unique_ptr<char>> v;
for(size_t i = 0; i < 5; ++i)
{
char* p = new char[10];
sprintf(p, "string %d", i);
v.push_back(unique_ptr<char, Deleter<char>>(p)); // error is here
}
}
错误C2664: '无效的std ::矢量< _Ty> ::的push_back(标准::的unique_ptr & &)':无法从“STD转换参数1 ::的unique_ptr < _Ty,_Dx>”到 '的std ::的unique_ptr < _Ty> & &'
编译器:VC++ 2012我怎样才能解决这个问题?我的目标是将unique_ptr
与定制删除程序一起使用,该程序调用delete[]
而不是默认delete
。
任何理由你不使用'矢量'或'矢量>':所以,你应该为你的申报载体? –
2013-03-04 09:30:11