RAII 관용구가 클래스에서 필요로하는 리소스에 적용될 때 이해합니다. (틀린 경우 수정하십시오), 리소스가 필요한 클래스는 적절한 유형의 멤버를 정의해야하며 해당 소멸자는 사용하여 클래스의 인스턴스가 파괴 될 때 다음과 같이 자동으로 호출 :RAII를 확장 초기화가 필요한 클래스 멤버에 어떻게 적용 할 수 있습니까?
외에도 힙에 리소스를 할당하는 스마트 포인터를 사용에서class Skybox
{
public:
Skybox() : tex_(...) {}
private:
Texture tex_;
};
는이 패턴을 적용 할 수있는 방법을 자원 구성원이 실행해야 할 몇 가지 코드를 요구하는 경우 Skybox
생성자에서 리소스를 초기화하기 전에? 예를 들어 :
class Skybox
{
public:
Skybox(const std::string& fileName);
private:
Texture tex_;
}
Skybox::Skybox(const std::string& fileName)
{
// read stuff from skybox initialization file
// including various texture parameters such as texture file
...
// initialize tex_ based on information read above
}
이 업데이트 : Texture
클래스가 생성자에서 수행되는 모든 초기화가 필요
'Texture' 클래스는'tex_.init (...) '처럼 나중에 초기화 할 수 있습니까? –
아니요, 그렇지 않습니다. 나는 질문 문안을 갱신 할 것이다. –
tex를 초기화하는 것 이외의 다른 용도로 사용할 필요가있는 사전 계산이 있습니까? 그렇지 않다면, 파일 이름을 취하고 모든 처리를 자체 초기화의 일부로 수행하는 질감 생성자를 생성하십시오. – matthias