shared_ptr파생 유형을 shared_ptr기본 유형 을 취하는 함수 에 전달하는 가장 좋은 방법은 무엇입니까 ? 나는 일반적으로 shared_ptr불필요한 사본을 피하기 위해 s를 참조로 전달합니다 . int foo(const shared_ptr<bar>& ptr); 하지만 다음과 같은 작업을 시도하면 작동하지 않습니다. int foo(const shared_ptr<Base>& ptr); ... shared_ptr<Derived> bar = make_shared<Derived>(); foo(bar); 나는 사용할 수있다 foo(dynamic_pointer_cast<Base, Derived>(bar)); …
공유 포인터로 래핑 된 객체를 선언하면 : std::shared_ptr<myClass> myClassObject(new myClass()); 그런 다음 메서드에 인수로 전달하고 싶었습니다. DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } 위의 내용은 단순히 shared_pt의 참조 횟수를 증가시키고 모든 것이 멋지나요? 아니면 매달린 포인터를 남기나요? 그래도 이렇게해야합니까? : DoSomething(myClassObject.Get()); void DoSomething(std::shared_ptr<myClass>* arg1) { …
안녕하세요 저는 오늘 동일한 벡터 배열에 다른 유형의 객체를 삽입하는 방법에 대한 질문을했는데 그 질문의 코드는 gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ..... ...... virtual void Run() { //A virtual function } …
cplusplus.com의 shared_ptr페이지는 구별 부른다 빈 std::shared_ptr 과 널을 shared_ptr . cppreference.com 페이지 를 명시 적으로 모두 "빈"와 비교 차이를 불러하지만, 사용하지 않는 nullptr자사의 설명에 std::shared_ptr행동. 비어있는 것과 널 사이에 차이점이 shared_ptr있습니까? 이러한 혼합 동작 포인터에 대한 사용 사례가 있습니까? 비어 있지 않은 null shared_ptr도 의미가 있습니까? 정상적인 사용에서 (즉, 명시 …
shared_ptr사용자 지정 할당 자 와 사용자 지정 삭제 기가 있다고 가정 해보십시오. 표준에서 삭제 프로그램을 저장할 위치에 대한 내용을 찾을 수 없습니다. 사용자 지정 할당자가 삭제 프로그램의 메모리에 사용될 것이라고 말하지 않으며 그렇지 않을 것이라고 말하지 않습니다 . 이것이 지정되지 않았습니까? 아니면 뭔가 빠졌습니까?