Я пытаюсь использовать std::unique_ptr
с deleter. Это мой код:unique_ptr с deleter
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: 'пустота станд :: вектор < _Ty> :: push_back (станд :: unique_ptr & &)': не удается преобразовать параметр 1 из «станд :: unique_ptr < _Ty, _Dx>»на 'станд :: unique_ptr < _Ty> & &'
Компилятор: VC++ 2012. Как я могу это исправить? Моя цель - использовать unique_ptr
с пользовательским делетером, который вызывает delete[]
, а не по умолчанию delete
.
какой-либо причине вы не используете 'вектор' или 'вектор >'? –