다음과 같은 문제가 있습니다 : 내 생성자에서 매개 변수로 얻은 개체로 작업하는 가장 좋은 방법은 무엇입니까? 초기 개체가 변경되지 않으므로 복사본을 사용하고 싶지 않습니다.생성자의 매개 변수로 작업하기
Obj obj;
myclass::myclass(Obj& obj)
{
this->obj = obj; //copy
}
void myclass::doSometh()
{
obj.add(....); //working with the copy
}
내 솔루션은 포인터를 사용하는 것입니다 :
Obj* obj;
void myclass::myclass(Obj& obj)
{
this->obj = &obj;
}
void myclass::doSometh()
{
obj->add(....);
}
또는
Obj* obj;
myclass::myclass(Obj* obj)
{
this->obj = obj;
}
void myclass::doSometh()
{
obj->add(....);
}
어떻게 내 솔루션에 대해 당신이 일을? 또는 더 나은 해결책이 있습니까?
귀하의 솔루션이 작동하지 않을 수의 수명에 따라 달라집니다 'Obj' 객체입니다.이 객체는 세 번째 객체와 비슷합니다. Java, Python, C# 등의 자동 메모리 관리 언어를 사용하는 경우 C++ 객체 수명 및 동적 메모리 관리에 대해 읽어야합니다. – mostruash
초기 객체가 더 이상 존재하지 않으면 내 포인터에 문제가 있지만 whats 이, 스마트 포인터를 사용하여 최고의 솔루션? 잘 그것에 대해 많이 읽었지만이 여전히 최상의 솔루션을 찾을 수 없습니다 – jeromintus
당신이 내부 클래스를 사용할 필요가 없습니다 – 4pie0