문제

이것은 숙제가 아니라 내 코드에 대한 질문 일뿐입니다 (C ++를 배우고 있습니다).

모두 동일한 리소스, SDL에 의해로드 된 BMP를 사용하는 클래스 Renderer의 여러 인스턴스가 있습니다.이것이 수업의 공유 리소스를 관리하는 올바른 방법입니까?그렇지 않다면 좋은 것은 무엇입니까?그렇다면 더 나은 것이 있습니까?

renderer.hpp 라코 디스

renderer.cpp 라코 디스

도움이 되었습니까?

해결책

<인용구>

이것은 수업의 공유 리소스를 관리하는 올바른 방법인가요?

예, 엄밀히 말하면 올바른 방법입니다. 하지만 가능한 한 빨리 멀어져 야합니다. 아니, 걷지 말고 뛰십시오. 그리고 뒤돌아 보지 마십시오. <인용구>

그렇지 않다면 좋은 것은 무엇입니까?

std::shared_ptr<> 또는 boost::shared_ptr<>와 유사한 것을 선호합니다. <인용구>

그렇다면 더 좋은 것이 있습니까?

클래스 내부에 정적 표면 포인터와 정적 참조 카운터를 갖는 대신 표면에 대한 유전자 태그 코드를 하나 유지하고 클래스 외부에서 한 번 만든 다음 렌더러 생성자에 전달합니다. . 이렇게하면 다음과 같은 이점이 있습니다.

( 굵게 편집 : )

  • shared_ptr가 자동으로 수행하므로 누가 마지막 소유자이고 따라서 리소스 삭제에 대한 책임이 있는지 생각할 필요가 없습니다.
  • 스레드 안전성
  • 코드가 적다는 것은 종종 버그가 적다는 것을 의미합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top