auto_ptr on wikipedia 수 auto_ptr은 "는 STL 컨테이너를 포함하는 auto_ptr은 상기 용기의 상기 변형을 방지하기 위해 사용될 수있다."라고. 내가 마지막 행의 주석을 해제하면 왜이 벡터의 소유권을 전송 한 후, 더 이상 수 없다, g ++ 내가 궁금왜 "밀봉"컨테이너
t05.cpp:24: error: passing ‘const std::vector<int, std::allocator<int> >’
as ‘this’ argument of ‘void std::vector<_Tp, _Alloc>::push_back(const _Tp&)
[with _Tp = int, _Alloc = std::allocator<int>]’ discards qualifiers
같은 오류를보고합니다
auto_ptr<vector<ContainedType> > open_vec(new vector<ContainedType>);
open_vec->push_back(5);
open_vec->push_back(3);
// Transfers control, but now the vector cannot be changed:
auto_ptr<const vector<ContainedType> > closed_vec(open_vec);
// closed_vec->push_back(8); // Can no longer modify
에는 다음과 같은 예를 사용 수정?
고맙습니다.
고마워요! :) closed_vec에서 "const"를 간과했습니다. – icephere
그것은 _ auto_ptr과 관련이 있습니다. 일반 포인터를 사용하면 이전의 비 const 포인터를 사용하여 컨테이너를 수정할 수 있습니다. 비 const auto_ptr은 소유권 이전 후에 NULL이됩니다. – MSalters