내 클래스에는 배열에 대한 고유 한 포인터가 들어 있습니다. 복사 생성자가 호출되면 클래스에 고유 한 포인터 배열을 만들고 이전 고유 포인터 배열의 내용을 복사하기를 원합니다. 나는 const 값으로부터 변환하는 것에 관한 에러를 계속 얻었고, 나는 그것을 둘러싼 방법을 잘 모르고있다.복사 생성자에서 고유 한 포인터 배열의 내용 복사
내 포인터가 다음과 같이 개인에서 선언: 나는 배열을 그냥 루프를 계획
std::unique_ptr<Manager[]> managers;
수동으로 복사, 그래서이 복사 생성자를 만들어 :
Restaurant::Restaurant(const Restaurant &_r)
{
Manager *_managers = _r.managers;
for (int i = 0; i < MAX_MANAGERS; i++)
{
managers.get()[i] = _managers[i];
}
}
IT는 CONST를 제공합니다 이 줄의 오류를 변환하십시오 :
Manager *_managers = _r.managers;
나는 단지 깊은 사본을 만들고 싶습니다. 어떻게하면이 일을 할 수 있습니까?
'_r.managers'가 unique_ptr이 아닌가요? 그것을 다른 것에 할당 할 수는 없습니다. – juanchopanza
또한 copy semantics를 원하면 unique_ptr을 사용해야하는 이유는 무엇입니까? 'std :: vector'이 더 적합하지 않겠는가? –
juanchopanza
그는 각 클래스 인스턴스가 unique_ptr을 어떤 배열에 갖기를 원합니다. 한 클래스에서 unique_ptr의 사용은 복사 금지를 의미합니까? 지적 된 객체가 실제로 유일하다면, 그는 shared_ptr을 만들고 싶지 않지만 여전히 클래스 인스턴스를 복사하려고합니다. – 4pie0