pimpl-idiom

    54

    2답변

    여기는 pimpl에 대해 unique_ptr을 사용하려고 시도하는 것을 단순화 한 것입니다. 나는 클래스가 정말로 포인터를 소유하기를 원하기 때문에 unique_ptr을 선택했다 - 나는 pimpl 포인터와 클래스의 수명을 같게하고 싶다. 여기 #ifndef HELP #define HELP 1 #include <memory> class Help

    2

    1답변

    기본적으로 제안서를 구현했습니다. 제 질문은 완료 되었습니까? 그렇다면 어디에서? 그리고/또는 내가하는 일을하는 더 좋은 방법이 있습니까? 이 게시물의 길이에 대해 유감스럽게 생각합니다. 코드 제공 이외의 방법을 설명하는 더 좋은 방법을 알지 못했습니다. 나는 이전에 기본적으로, 우리는 인터페이스 interface 및 구현 impl있어 말할 수, 여기서 다

    5

    1답변

    // main_pimpl_sample.cpp #include "pimpl_sample.hpp" using namespace std; int main() { pimpl_sample p; return 0; } // pimpl_sample.cpp #include "pimpl_sample.hpp" struct pimpl_

    5

    4답변

    나는 핌플 패턴을 사용하고 익명 네임 스페이스에서 구현 클래스를 정의하려고합니다. C++에서도 가능합니까? 실패한 시도는 아래에 설명되어 있습니다. 구현을 이름 (또는 전역 이름)이있는 네임 스페이스로 이동하지 않고이 문제를 해결할 수 있습니까? class MyCalculatorImplementation; class MyCalculator { pub

    7

    3답변

    about the pimpl idiom을 읽은 후 나는 두려웠다! .h/.cpp 파일을 검사하고 종속성을 전파 할 수있는 도구를 추려 낼 수있는 도구가 있습니까?

    4

    5답변

    pimpl 관용구의 주된 이점은 헤더 대신 구현 파일에서 데이터 멤버를 숨기는 것입니다. 그러나 컴파일러가 요구에 따라 템플릿을 인스턴스화하려면 템플릿을 헤더에 완전히 정의해야합니다. 이 경우 템플리트 클래스에 pimpl 관용구를 사용하면 어떤 이점이 있습니까?

    0

    4답변

    의 간단한 형태는 왜이 디자인 선택하지 : 대신 // A.hpp class A { public: void do_something(); }; // A.cpp #include "A.hpp" #include <vector> std::vector<int> impl_database_for_do_something; static void

    4

    4답변

    boost :: shared_ptr는 정말 저를 괴롭 힙니다. 확실히, 나는 그러한 일의 유용성을 이해하지만 나는 shared_ptr<A>을으로 A*으로 사용할 수 있기를 바란다. 다음 코드를 고려하십시오. class A { public: A() {} A(int x) {mX = x;} virtual void setX(int x

    6

    4답변

    pimpl 관용구를 사용할 때 모든 메서드 정의를 클래스 정의 안에 넣는 것이 좋은 생각입니까? // in A.h class A { class impl; boost::scoped_ptr<impl> pimpl; public: A(); int foo(); } // in A.cpp class A::impl {

    9

    3답변

    d- 포인터는 Qt에서 많이 사용되며 pimpl 관용구를 구현 한 것입니다. 나는 pimpl 관용구의 장단점을 안다. 그러나 나는 d- 포인터 구현의 장점을 놓쳤다. Here 및 here은 d- 포인터의 샘플입니다. 이것을 사용하는 것이 더 쉽지 않습니까? class MyClassPrivate; class MyClass { // interface