raii

    6

    6답변

    이전에 다른 이름으로이 질문을했지만 잘 설명하지 않았으므로 삭제했습니다. 파일을 관리하는 클래스가 있다고 가정 해 보겠습니다. 의이 클래스는 특정 파일 형식을 필요로 파일을 처리하고,이 파일에 대한 작업을 수행하는 방법을 포함한다고 가정 해 봅시다 : class Foo { std::wstring fileName_; public: Foo(

    7

    3답변

    제 작품에서 우리는 대략 1-2 초 정도의 최대 대기 시간을 갖는 제어 어플리케이션을위한 시스템 아키텍처를 최근 마쳤습니다. IP LAN을 통해 통신하는 소형 ARM 온칩 박스에 분산되어 있습니다. 우리는 고전적인 제어 시스템 언어이기 때문에 처음에는 C 또는 C++을 사용할 것으로 예상했습니다. 응용 프로그램을 구현하는 방법을 논의한 후에 C++에는 매우

    0

    2답변

    내가 Win32에서 관리를위한 C++ RAII 클래스가에 기능을 추가 :: shared_ptr의 <> 보이는이 같은 비트 : namespace detail { struct NoDelete { void operator()(void*) {}; }; }; // namespace detail template< typename HANDLE_TYPE, type

    1

    5답변

    우리는 각각 다른 개발자가 개발 한 3 개의 다른 라이브러리를 가지고 있으며 각각은 (아마도) 잘 설계되었습니다. 그러나 일부 라이브러리는 RAII를 사용하고 일부 라이브러리는 RAII를 사용하지 않기 때문에 일부 라이브러리는 동적으로로드되고 다른 라이브러리는 그렇지 않습니다. 작동하지 않습니다. 각 개발자는 자신이 한 일이 옳다고 말하고이 경우에만 방법론

    1

    1답변

    새로운 프로젝트에 대한 광범위한 테스트를하고 싶지만 문제가 있습니다. 기본적으로 MyClass를 테스트하고 싶습니다. MyClass는 필자가 테스트 목적으로 일을하고 싶지 않거나 원하는 다른 여러 클래스를 사용합니다. 그래서 mock을 만들었습니다. (테스트를 위해 gtest와 gmock을 사용합니다) 그러나 MyClass는 생성자에서 필요한 모든 것을 인

    5

    3답변

    컨트롤의 반전 (IOC)을 읽었을 때 메모리 관리에 어려움을 겪는 것처럼 보였습니다. 물론 ioc는 가비지 수집 환경 (Net, Java, Scripting)에서 주로 사용되는 것으로 보이지만 걱정거리는 비 gc 설정에 있습니다. 내 관심사는 여기에 IOC가 RAII에 맞서고 있다는 것입니다. 우리는 개체 수명과 리소스 수명을 분리합니다. 이 복잡성이 다른

    7

    1답변

    제도에서 자원 획득을 초기화하는 것이 있습니까? GCII 언어에서는 RAII가 잘 작동하지 않는다는 것을 알고 있습니다. (객체가 파괴되었다는 것을 알지 못하기 때문에). 그러나 Scheme에는 연속체, 동적 바람 및 클로저와 같은 유용한 요소가 있습니다.이 조합을 사용하여 RAII를 구현하는 방법이 있습니까? 그렇다면 스키마가 RAII를 사용하지 않도록

    37

    3답변

    매크로가 유효합니다. 템플릿이 좋습니다. 거의 모든 것이 제대로 작동합니다. 이 예는 OpenGL입니다. 그러나이 기술은 C++과 OpenGL에 대한 지식이 없기 때문에 가능합니다. 정확한 문제 : 원하는 표현식 E; 여기서 고유 한 이름을 지정할 필요가 없습니다. 즉 E가 정의 된 곳에서 생성자가 호출되고 블록 E가 끝나는 곳에서 소멸자가 호출됩니다. c

    9

    4답변

    최근 RAII에 대한 일반적인 질문이 SO에 게시되었습니다. 그러나 HANDLE 예제에는 여전히 구현 문제가 있습니다. HANDLE은 void *에 windows.h으로 입력됩니다. 따라서, 올바른 shared_ptr 정의는 std::tr1::shared_ptr<void> myHandle (INVALID_HANDLE_VALUE, CloseHandle);

    3

    5답변

    DuplicateHandle에서 작동하지 않는 핸들에 대한 래퍼를 만들므로 대신 shared_ptr에서 핸들을 래핑하려고합니다. 나는 또한 핸들 매개 변수 (좋지 않은)와 긴밀한 만드는 시도 class CWrapper { public: CWrapper() : m_pHandle(new HANDLE, &CWrapper::Close)