pimpl-idiom

    1

    1답변

    저는 PIMPL을 구현하는 두 가지 클래스 인 State와 StateMachine을가집니다. 그들은 Private :: State 및 Private :: StateMachine을 구현합니다. Private :: StateMachine에는 "addState (Private :: State &)"메서드가 있습니다. 나는 머신 (StateMachine) 내에서

    0

    1답변

    나는 여러 가지 정적 메소드 및 인스턴스 메소드가있는 싱글 톤을가집니다. 나는 그것을 다른 곳에서 사용할 수 있도록 DLL로 export하고 싶다. 그러나 그렇게하면 클래스의 개인 데이터 멤버를 내보내지 않았기 때문에 컴파일러 경고가 생성됩니다. 저의 연구에서 필자는 PIMPL 관용어를 발견하고 내가하고 싶은 일을하는 데 사용될 수 있음을 확인했습니다. 그

    1

    2답변

    저는 PIMPL 관용구를 사용하고 있습니다. 특히 this post에서 제공된 템플릿을 사용하고 있습니다. 아래 클래스의 집합을 감안할 때 VS2015 업데이트 3, 나는 오류 컴파일는군요 컴파일 (소스 파일 SRC ​​\ A.cpp를 컴파일) 정의되지 않은 형식 'C : C_impl'의 오류 C2027 사용을 오류 C2338은 불완전한 유형 (소스 파일

    4

    1답변

    클래스의 클라이언트가 신경 쓰지 않는 구현 세부 사항 인 개인 멤버가있는 클래스가 있다고 가정합니다. 이제 MyClass에 모든 클라이언트가 빌드 시간을 증가, 정말 필요하지 않습니다 부스트 헤더를 많이 끌어 오기 강제로 예를 들어 #include <boost/bimap.hpp> // some header that pulls in many other fil

    2

    2답변

    내 목표는 내 새 라이브러리에 abi 호환성을 제공하는 것입니다. 원시 포인터 대신 unique_ptr을 사용하려고합니다. 하지만 표준 라이브러리를 업데이트하면 abi가 중단 될 수 있습니다. 사실입니까? 향후 stdlib 릴리즈에서 unique_ptrs에 대한 abi 안정성 보장이 있습니까?

    3

    3답변

    .H public: void doStuff() const; private: struct Private; Private * d; 통화 당 struct XX::Private { int count; } void XX::doStuff() const { d->count = 2; // I want an err

    1

    2답변

    인터페이스 요구 사항이 알려진 작은 IO 라이브러리에서 작업하고 있지만 구현이 변경 될 가능성이 있습니다. 라이브러리는 파일을 읽고 저장하고 일부 메타 데이터를 저장하기로되어 있습니다. 비록이 작업에 적합하다고 생각되기 때문에 나는 약을 사용하고 있습니다. 내 질문은 구현이 아래 예제와 같이 두 개의 파일로 나눌 수있는 경우입니다. class Writer

    4

    2답변

    현재 프로젝트에는 C++ API 작성과 PIMPL 관용구를 사용하기로 결정했습니다. 내 프로젝트에서 PIMPL 관용구를 사용해야할까요? 예를 들어 std::exception에서 상속받은 맞춤 클래스를 만들 필요가 있습니다.이 클래스를 PIMPL 관용구를 염두에두고 디자인해야합니까? 아니면 공용 구현으로 작성할 수 있습니까? 내가 작성하는 모든 클래스가 중심

    1

    2답변

    pimpl 패턴으로 ABI를 보장하려면 모든 데이터 멤버를 "개인 클래스"로만 설정하면됩니다. 일부 소개에서는 pimpl을 보았습니다. 또한 "Private 클래스"의 모든 함수 구현을 만들고 "Private 클래스"의 각 함수에 대해 내 보낸 클래스의 "래퍼 함수"를 정의해야합니까?

    4

    1답변

    PIMPL 관용구는 종종 가상 함수도 포함하는 객체의 공용 API에 사용됩니다. 여기서 힙 할당은 종종 다형성 객체를 할당하는 데 사용되며이 객체는 unique_ptr 또는 이와 비슷한 형태로 저장됩니다. 이것의 유명한 예가 Qt API입니다. Qt API에서는 대부분의 객체 (특히 QWidgets 등)가 힙에 할당되고 QObject 부모/자식 관계에 의해