클래스 유형이 "xx"인 stl 벡터가 있다고 가정 해 보겠습니다. xx는 추상적입니다. 내가 복사 생성자를 호출해야하기 때문에이 가정stl vector.push_back() 추상 클래스가 컴파일되지 않음
std::vector<xx> victor;
void pusher(xx& thing)
{
victor.push_back(thing);
}
void main()
{
;
}
: 나는 컴파일러가 나는 다음과 같이 뭔가를 할 때 내가 "인스턴스화"못하게 문제로 실행했다. xx *를 xx 대신 벡터에 저장하여이 문제를 해결했습니다. 더 나은 해결책이 있습니까? 이게 뭐야?
그러나 std :: auto_ptr을 사용하지 마십시오. 이상한 복사 의미 때문에 STL 컨테이너에 넣을 수 없습니다. –
부스트의 ptr_vector - http://www.boost.org/doc/libs/1_39_0/libs/ptr_container/doc/ptr_container.html – bdonlan
을 사용하면 stl 벡터를 사용할 때 기본적으로 xx 상태가 복사됩니다. 그리고 나서 그것을 검색 할 때, C++은 먼저 xx를 인스턴스화하고 적절한 속성으로 채 웁니다. 단순히 오래된 객체를 가리키는 것과는 대조적입니다. 그래서 전체 문제는 우리가 xx의 생성자를 사용하는 것입니까? – Ori