나는 deleter와 함께 std::unique_ptr
을 사용하려고합니다.unique_ptr with 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
을 사용하는 것입니다.
어떤 이유 : 따라서, 당신은 당신의 벡터를 선언해야? –