«unique-ptr» 태그된 질문

std :: unique_ptr은 포인터를 통해 개체의 단독 소유권을 유지하는 스마트 포인터입니다. unique_ptr은 복사 또는 복사 할당이 불가능하며, unique_ptr의 두 인스턴스는 동일한 개체를 관리 할 수 ​​없습니다.

6
unique_ptr 인수를 생성자 또는 함수에 어떻게 전달합니까?
C ++ 11에서 의미를 옮기는 것이 처음 unique_ptr이며 생성자 또는 함수에서 매개 변수 를 처리하는 방법을 잘 모릅니다 . 이 클래스 자체를 참조하십시오. #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; …

5
함수에서 unique_ptr 반환
unique_ptr<T>복사 구성을 허용하지 않고 대신 이동 의미를 지원합니다. 그러나 unique_ptr<T>함수에서를 반환하고 반환 된 값을 변수에 할당 할 수 있습니다 . #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int main() { unique_ptr<int> …
367 c++  c++11  unique-ptr 

8
std :: unique_ptr <T>가 T의 전체 정의를 알아야합니까?
헤더에 다음과 같은 코드가 있습니다. #include &lt;memory&gt; class Thing; class MyClass { std::unique_ptr&lt; Thing &gt; my_thing; }; Thing유형 정의가 포함되지 않은 cpp에이 헤더를 포함 시키면 VS2010-SP1에서 컴파일되지 않습니다. 1&gt; C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ memory (2067) : 오류 C2027 …


2
unique_ptr을 벡터로 푸시 백 할 수없는 이유는 무엇입니까?
이 프로그램에 어떤 문제가 있습니까? #include &lt;memory&gt; #include &lt;vector&gt; int main() { std::vector&lt;std::unique_ptr&lt;int&gt;&gt; vec; int x(1); std::unique_ptr&lt;int&gt; ptr2x(&amp;x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } 오류: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator&lt;_Tp&gt;::construct(_Tp*, const _Tp&amp;) [with …

6
make_unique와 완벽한 전달
std::make_unique표준 C ++ 11 라이브러리에 함수 템플릿 이없는 이유는 무엇 입니까? 나는 찾는다 std::unique_ptr&lt;SomeUserDefinedType&gt; p(new SomeUserDefinedType(1, 2, 3)); 조금 장황하다. 다음이 훨씬 좋지 않을까요? auto p = std::make_unique&lt;SomeUserDefinedType&gt;(1, 2, 3); 이것은 new멋지게 숨기고 유형을 한 번만 언급합니다. 어쨌든, 여기에 구현하려는 나의 시도는 make_unique다음 과 같습니다. template&lt;typename T, typename... Args&gt; std::unique_ptr&lt;T&gt; …

6
불완전한 유형의 std :: unique_ptr은 컴파일되지 않습니다
나는 pimpl-idiom을 std::unique_ptr다음 과 함께 사용하고 있습니다 : class window { window(const rectangle&amp; rect); private: class window_impl; // defined elsewhere std::unique_ptr&lt;window_impl&gt; impl_; // won't compile }; 그러나 304 줄에서 불완전한 유형의 사용과 관련하여 컴파일 오류가 발생합니다 &lt;memory&gt;. sizeof불완전한 유형 ' uixx::window::window_impl' 에 ' '을 (를) 잘못 적용했습니다. 내가 아는 std::unique_ptr한 …

4
std :: auto_ptr에서 std :: unique_ptr로
새로운 표준이 등장함에 따라 (그리고 일부 컴파일러에서 이미 사용 가능한 부분), 새로운 유형 std::unique_ptr은의 대체품으로 간주됩니다 std::auto_ptr. 사용법이 정확히 겹치므로 (내 코드에서 전역 찾기 / 바꾸기를 수행 할 수는 있지만 (그렇지 않은 경우) 그렇지 않은 경우) 설명서를 읽을 때 명확하지 않은 몇 가지 차이점을 알고 있어야합니까? 또한 그것이 직접 대체라면 …

2
반원을위한 스마트 포인터 사용
C ++ 11의 클래스 멤버로 스마트 포인터의 사용법을 이해하는 데 문제가 있습니다. 나는 스마트 포인터에 대해 많이 읽었으며 나는 방법을 이해하는 것 같아요 unique_ptr및 shared_ptr/ weak_ptr일반적으로 작업을. 내가 이해하지 못하는 것은 실제 사용법입니다. 모든 사람들 unique_ptr이 거의 항상가는 길로 사용 하는 것이 좋습니다 . 그러나 어떻게 이런 식으로 구현할 것입니까? …

6
std :: unique_ptr 멤버와 함께 사용자 정의 삭제기를 사용하려면 어떻게합니까?
unique_ptr 멤버가있는 클래스가 있습니다. class Foo { private: std::unique_ptr&lt;Bar&gt; bar; ... }; Bar는 create () 함수와 destroy () 함수가있는 타사 클래스입니다. std::unique_ptr독립형 기능 으로 함께 사용하고 싶다면 다음을 수행 할 수 있습니다. void foo() { std::unique_ptr&lt;Bar, void(*)(Bar*)&gt; bar(create(), [](Bar* b){ destroy(b); }); ... } std::unique_ptr수업의 일원으로서 이것을 할 수있는 방법이 …



7
std :: unique_ptr을 함수에 어떻게 전달할 수 있습니까?
std::unique_ptr함수에를 어떻게 전달할 수 있습니까? 다음과 같은 수업이 있다고 가정 해 보겠습니다. class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; 다음은 컴파일되지 않습니다. void MyFunc(unique_ptr&lt;A&gt; arg) { cout &lt;&lt; arg-&gt;GetVal() &lt;&lt; endl; } int main(int argc, char* …
101 c++  c++11  unique-ptr 



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.