목록에있는 일부 개체에 대한 포인터를 저장하는 mother 클래스가 있습니다. 나는이 물건들이 파괴되었을 때 목록에서 스스로 분리 해주기를 바란다. 누구든지이 작업을 수행 할 수있는 좋은 방법을 제안 할 수 있습니까?자동 분리 개체?
0
A
답변
1
조 방법이 목록에있는 개체의 컨테이너 참조 (또는 포인터)를 저장하는 것입니다 전화 자신의 소멸자에서 자신을 제거 : 이것은 Contained
클래스가 아닌 복사 가능한 만드는 것을
class Contained;
class Container {
std::list<Contained*> children;
public:
...
void goodbye(Contained*);
};
class Contained {
Container& c; // you set this in the constructor
public:
~Contained() { c.goodbye(this); }
};
참고.
쉬운 방법은 이미 이러한 기능을 제공하는 일부 프레임 워크를 사용하는 것입니다. 예 : Qt를 사용한다면 QObject
에서 Contained
클래스를 파생시키고 QPointer<Contained>
을 컨테이너에 저장하면됩니다. 포함 된 오브젝트가 삭제되면 QPointer
은 0으로 설정됩니다.
또는, boost::shared_pointer
같은 일부 메모리 관리 기능을 사용하는 경우, (나는 자식 개체가 죽었을 때, 그렇지 않으면 최고 알고, 컨테이너가 Contained
객체를 소유하고 있지 않은 가정은), 당신은 Container
에 약한 포인터를 사용합니다 비슷한 기능을합니다.
0
당신은 그 클래스에 어머니 클래스를 참조/포인터를 추가 할 수 있으며 소멸자가 호출 될 때 그들은 mother.Detach(this)
관련 문제
- 1. EF4에서 개체 분리 - 개체 그래프 손실
- 2. DAL에서 데이터베이스 개체 분리 수준
- 3. jQuery 플러그인 - 옵션 개체 분리 유지
- 4. EF (4) 컨텍스트 외부의 컨텍스트에서 개체 분리
- 5. Jdo/Hibernate의 분리 개체 - 어쨌든 무엇을위한 것입니까?
- 6. 양식의 개체 자동 수정
- 7. 자동 개체 파괴
- 8. 값 개체 자동 생성
- 9. 자동 복구 풀의 개체 수
- 10. 분리
- 11. 봄 - 최대 절전 모드 : 지속에 전달 분리 된 개체
- 12. C# XSD에서 클래스 개체 자동 생성
- 13. 개체 태그 자동 숨김, 이유는 무엇입니까?
- 14. AsyncTask 및 UI-Thread 분리/분리
- 15. 오브젝트 데이터를 오브젝트 데이터와 분리
- 16. 분리 기능
- 17. 엔티티 프레임 워크 : 관심 분리
- 18. 비즈니스 계층에서 프로세스 분리 방법
- 19. 자바 스크립트 개체 [개체 개체]
- 20. 개체 암호화
- 21. 역 참조가있는 분리 된 분리 기호는 어떻게 작동합니까?
- 22. MySQL : 분리 문자열로 분리 된 문자열의 왼쪽 부분?
- 23. 음악에서 노래하는 소리의 분리
- 24. "분리 뮤텍스"란 무엇입니까?
- 25. 로직 및 UI 분리
- 26. ActionScript로 H.264 분리
- 27. TinyMCE에서 스타일을 분리 하시겠습니까?
- 28. cakePHP에서 코드 분리
- 29. 루비 루프에서 쉼표 분리?
- 30. 우려와 인증의 분리
감사합니다. 예 이런 식으로 생각했지만 문제는 자식 개체가 소멸 될 때까지 부모 개체가 존재할 것이라고 보장 할 수 없습니다. (나는 그것이 "엄마"라고 부르는 것은 약간의 오도 된 XD라고 생각한다). 엄마가 자식보다 먼저 파괴된다면, 자식의 소멸자가 호출 될 때 나쁜 일이 일어날 것입니다 ... – user418680
약한 포인터 방법이 저에게 효과적 일 수 있습니다. 내가 그것을 들여다 볼게. 고맙습니다. – user418680
마지막 제안의 문제점은 개체가 죽을 때 약한 포인터가 목록에서 자동으로 제거되지 않는다는 것입니다. 날로 커지는 포인터의 목록을 피하려면 좀 더 많은 작업이 필요합니다. –