질문 :
std::vector<unique_ptr<obj>>
에 개체를 추가하는 방법은 무엇입니까?
내가 클래스를 가지고 있고, 이것이 내가 아래는
... 할을 시도하고 무엇을 내가 가장 쉬운 것이라고 생각대로, 나는 나의 벡터에 std::unique_ptr<Ball>
를 사용하는 것을 시도하고있다. std :: vector에 객체를 추가하는 방법 <unique_ptr <obj>>?
class Ball {
public:
Ball(float x, float y);
std::vector<std::unique_ptr<Ball>> object;
// other declarations below...
};
Ball ball { 0, 0 };
for (size_t i { 0 }; i != 50; ++i) {
ball.object.push_back(new Ball { 0, 0 });
// ^here is the error
}
그리고 내가지고있어 오류를 이해하고 더 않는다.
오류 :
error C2664: 'void std::vector<std::unique_ptr<Ball,std::default_delete<_Ty>>,std::allocator<std::unique_ptr<_Ty,std::default_delete<_Ty>>>>::push_back(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : cannot convert argument 1 from 'Ball *' to 'std::unique_ptr<Ball,std::default_delete<_Ty>> &&'
공에는 공이 많이 있습니까? 이상한 디자인입니다. –
'unique_ptr'의 생성자에 인수를 전달하기 위해'emplace_back'을 사용하십시오. –
@remyabel, 고마워, 그게 해결 됐어. –