smart-pointers

    2

    1답변

    Oppen's algorithm을 C++로 구현하려고합니다. 이 알고리즘 (인쇄 및 스캔)의 기본 루틴은 토큰 유형으로 발송됩니다. 방문자 패턴을 사용하여이 디스패치를 ​​구현하는 것이 자연스러운 것처럼 보입니다. 문제는 다음과 같습니다. 루틴이 중첩되어 print()에 대한 인수가 scan() 중에 스택에 대기열에 포함됩니다. 메모리 문제를 피하기 위해

    13

    2답변

    std::unique_ptr class (소유권 이동을 시도하는) 멤버를 호출자에게 반환하려고합니다. class A { public: A() : p {new int{10}} {} static std::unique_ptr<int> Foo(A &a) { return a.p; // ERROR: Copy constructor gett

    1

    1답변

    최근 Catch와 Fakeit을 사용하여 코드를 단위 테스트하기 시작했습니다. WinAPIs HWND 주위에 래퍼 클래스가 있습니다. class Window { public: Window(HWND hwnd); virtual void resize(int width, int height); ... private: HWN

    6

    3답변

    일반적인 C++ 디자인에서 대부분의 객체는 delete 문, free 함수 또는 free과 같은 라이브러리 특정 함수로 삭제할 수 있습니다. 이러한 객체의 경우 unique_ptrDeleter 구현은 빈 기본 클래스 최적화를 통해 제거되는 상태없는 객체가 될 수 있습니다. 그러나 일부 라이브러리는 라이브러리에서 오브젝트를 삭제하기 위해 다른 오브젝트 (함수

    9

    5답변

    C의 C++ 라이브러리에서 일부 API를 래핑해야합니다. 예를 들어 here과 같이 클래스 개체, extern "C"등에 대한 불투명 포인터를 사용하여이 작업을 수행했습니다. 그러나이 새로운 라이브러리는 참조 계산 스마트 포인터를 광범위하게 사용합니다. 스마트 포인터가있는 상태에서 랩핑을 수행하는 방법을 잘 모르겠습니다. SmartPointer<MyClas

    1

    1답변

    실제로 여기에 질문을 게시하는 것은 이번이 처음입니다! 단일 링크 된 목록에 대한 복사 생성자를 만드는 데 문제가있었습니다. 나는이 사이트와 다른 여러 사이트에서 비교할만한 예제를 찾기 위해 높거나 낮게 검색했습니다. 스마트 포인터를 사용하려고 시도했지만 지금까지는 unique_ptr(s) 만 사용했습니다. 이 함수는 전달 된 링크 된 목록의 전체 복사본을

    1

    1답변

    스마트 포인터를 사용하는 일부 코드를 포팅 할 때 문제가 발생합니다. 푸 내부적 Foo* Foo::FooFactory; 그래서 나는 우리가 C++ 클래스/객체에의 PTR을 만든 다음 PTR 것을 전달하는 것을 이해하는 기능을 통해 생성 기존 코드 ... shared_ptr<Foo> create_Foo(); 공유 Ptr 객체에 Foo 유형의 객체에 대

    1

    1답변

    별칭이 지정된 공유 포인터의 관리되는 개체를 가져 오려고합니다. 내 생각은 약한 포인터를 사용했다. 약한 포인터는 어떤 객체도 생성하지 않기 때문에 공유 포인터에서 약한 포인터를 생성하면 약 포인터가 앨리어싱 된 공유 포인터의 저장된 객체를 잊어 버려 약한 포인터를 잠그면 공유 된 포인터가 저장되고 관리됩니다 포인터. 하지만 내가 혼란스러워하는 결과. 약

    0

    1답변

    고유 포인터의 동작을 이해하는 데 문제가 있습니다. 내가 힙 개체 ... 그래서처럼 내 GameState 스택 std::unique_ptr<GameState> mMenuPtr(new MainMenu); 다음 push() 및 move()을 ... 할당하면 gameStates.push(std::move(mMenuPtr)); //pointer loses owne

    3

    4답변

    다음 예제를 참조하십시오. 고유 포인터와 a에 대한 원시 포인터를 사용했습니다. 제 질문은 원시 포인터가 작동하지만 고유 포인터가 작동하지 않는 이유는 무엇입니까? 문자열 a을 unique_ptr 또는 shared_ptr을 사용하여 참조와 같이 수정하려면 어떻게해야합니까? 프로그램 예 : #include <iostream> #include <string>