id로 일부 객체를 생성 할 C++ 객체 팩토리를 만들고 싶습니다. 각 개체에는 참조 카운터가 있어야합니다. 동일한 ID를 가진 객체가 다시 요청되면, 같은 객체가 여전히 메모리에 있다면 리턴되어야합니다.참조 캐시가있는 객체 캐시
개체에 포인터가있는 동안이 개체는 삭제되지 않습니다. 객체에 대한 포인터가 없지만 팩토리 캐시에 포인터가 있으면이 객체는 QCache에 저장되고 잠시 동안 다시 요청하지 않으면 삭제됩니다.
이것을 구현하는 가장 좋은 방법은 무엇입니까?
공장에서 'shared_ptr'을 나눠주고 자체적으로 'weak_ptr'을 유지할 수 있습니다. 그런 다음 ID가 다시 요청되면'weak_ptr'을'lock() '하려고 시도합니다. 성공하면 결과로 나오는'shared_ptr'을 넘겨주고, 실패하면 새로운 객체를 만듭니다. –