unique_ptr <>로 이동 생성자 및 할당 구현

같이

Device.cpp 파일에 현재 생성자가 있습니다.

Device::Device(const char *devName)
{
    device = devName;
    bt.reset(BTSerialPortBinding::Create(devName, 1));
}

My Device.h에는 다음과 같은 클래스 Device가 있습니다.

Device(const char *devName="");
~Device();
const char *device;
std::unique_ptr<BTSerialPortBinding> bt;

이동 생성자를 오른쪽으로 옮기고 unique_ptr은 복사 할 수 없기 때문에 할당을 이동하여 클래스를 복사 할 수 없게되고 ~ Device ()가이를 삭제합니다.

따라서 내가 사용하려고 할 때 :

Device dev; // declared in Process.h

dev = Device("93:11:22"); // initialised in Process.cpp

다음과 같은 오류가 발생합니다.

Device &Device::operator =(const Device &)': attempting to reference a deleted function

나는 Device.h에서 운없이 다음을 시도했습니다.

//move assignment operator
Device &operator=(Device &&o)
{
    if (this != &o)
    {
        bt = std::move(o.bt);
    }
    return *this;
}
Device(Device &&o) : bt(std::move(o.bt)) {};

이것을 시도하면 다음과 같은 오류가 발생합니다.

1>bluetoothserialport.lib(BTSerialPortBinding.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in ArduinoDevice.obj
1>bluetoothserialport.lib(BluetoothHelpers.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in ArduinoDevice.obj
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in libcpmtd.lib(xlock.obj)
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in libcpmtd.lib(xlock.obj)
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z) already defined in libcpmtd.lib(stdthrow.obj)
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) already defined in libcpmtd.lib(xthrow.obj)
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) already defined in libcpmtd.lib(xthrow.obj)
1>msvcprtd.lib(MSVCP140D.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPBD@Z) already defined in libcpmtd.lib(xthrow.obj)

Visual Studio 2015의 Windows 10에서 실행, BTSerialPortBinding에이 라이브러리 사용 : https://github.com/Agamnentzar/bluetooth-serial-port

Revolver_Ocelot

unique_ptr복사 할 수 없으며이를 포함하는 클래스는 복사 구성 또는 복사 할당이 불가능합니다. 클래스에 대해 최소한 이동 생성자와 이동 할당 연산자를 정의해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

std :: unique_ptr의 이동 생성자 / 할당 : 메모리 재 할당?

분류에서Dev

unique_ptr의 이동 생성자와 연산자를 클래스의 개인 멤버로 구현하는 방법

분류에서Dev

C ++ unique_ptr 이동 생성자

분류에서Dev

unique_ptr을 전달하는 동안 디버그 및 릴리스 구성의 일관성없는 이동?

분류에서Dev

C ++ : unique_ptr로 이동

분류에서Dev

unique_ptr 또는 값으로 객체 전달 및 구현 방법

분류에서Dev

상수 멤버로 클래스의 구성 및 할당 이동

분류에서Dev

기본 클래스 생성자로 이동하기 전에 unique_ptr에서 원시 포인터를 어떻게 추출 할 수 있습니까?

분류에서Dev

람다 캡처 사이트에서 구성된 unique_ptr을 벡터로 이동하지 못함

분류에서Dev

C ++에서 unique_ptr로 동적 할당을 강제합니까?

분류에서Dev

unique_ptr 구현 : 할당되지 않은 개체 삭제

분류에서Dev

값, 성능 및 unique_ptr로 개체 전달

분류에서Dev

unique_ptr로 만든 힙 요소가 여전히 힙에 할당 된 스택으로 이동됩니까?

분류에서Dev

할당 및 동적으로 생성 된 입력 태그 값을 업데이트 - JQuery와 -Materialize 자동 완성

분류에서Dev

이동 생성자 측면에서 복사 할당 연산자 구현

분류에서Dev

자동 구현 속성에 값 할당

분류에서Dev

자동 복제 unique_ptr

분류에서Dev

자동으로 열 분할 및 생성

분류에서Dev

unique_ptr 멤버로 구성된 벡터

분류에서Dev

개체를 unique_ptr로 이동

분류에서Dev

암시 적 이동 생성자 및 할당 연산자

분류에서Dev

C ++ 범용 참조로 unique_ptr을 이동할 수 없습니다.

분류에서Dev

HOCON 및 C #으로 구성 값 할당

분류에서Dev

새로운 boost :: asio :: io_service :: work 개체에 unique_ptr을 할당하는 올바른 구문?

분류에서Dev

C ++ 이미 생성 된 객체를 unique_ptr로 변환하는 방법

분류에서Dev

이동 할당 연산자가 정의 된 경우 해당 유형의 벡터에 unique_ptr을 포함하는 객체를 어떻게 할당합니까?

분류에서Dev

생성자 이동 및 할당 이동. 기본 클래스의 연산자

분류에서Dev

생성자 이동 및 클래스에 대한 할당 연산자 이동

분류에서Dev

C ++ unique_ptr 및 다형성

Related 관련 기사

  1. 1

    std :: unique_ptr의 이동 생성자 / 할당 : 메모리 재 할당?

  2. 2

    unique_ptr의 이동 생성자와 연산자를 클래스의 개인 멤버로 구현하는 방법

  3. 3

    C ++ unique_ptr 이동 생성자

  4. 4

    unique_ptr을 전달하는 동안 디버그 및 릴리스 구성의 일관성없는 이동?

  5. 5

    C ++ : unique_ptr로 이동

  6. 6

    unique_ptr 또는 값으로 객체 전달 및 구현 방법

  7. 7

    상수 멤버로 클래스의 구성 및 할당 이동

  8. 8

    기본 클래스 생성자로 이동하기 전에 unique_ptr에서 원시 포인터를 어떻게 추출 할 수 있습니까?

  9. 9

    람다 캡처 사이트에서 구성된 unique_ptr을 벡터로 이동하지 못함

  10. 10

    C ++에서 unique_ptr로 동적 할당을 강제합니까?

  11. 11

    unique_ptr 구현 : 할당되지 않은 개체 삭제

  12. 12

    값, 성능 및 unique_ptr로 개체 전달

  13. 13

    unique_ptr로 만든 힙 요소가 여전히 힙에 할당 된 스택으로 이동됩니까?

  14. 14

    할당 및 동적으로 생성 된 입력 태그 값을 업데이트 - JQuery와 -Materialize 자동 완성

  15. 15

    이동 생성자 측면에서 복사 할당 연산자 구현

  16. 16

    자동 구현 속성에 값 할당

  17. 17

    자동 복제 unique_ptr

  18. 18

    자동으로 열 분할 및 생성

  19. 19

    unique_ptr 멤버로 구성된 벡터

  20. 20

    개체를 unique_ptr로 이동

  21. 21

    암시 적 이동 생성자 및 할당 연산자

  22. 22

    C ++ 범용 참조로 unique_ptr을 이동할 수 없습니다.

  23. 23

    HOCON 및 C #으로 구성 값 할당

  24. 24

    새로운 boost :: asio :: io_service :: work 개체에 unique_ptr을 할당하는 올바른 구문?

  25. 25

    C ++ 이미 생성 된 객체를 unique_ptr로 변환하는 방법

  26. 26

    이동 할당 연산자가 정의 된 경우 해당 유형의 벡터에 unique_ptr을 포함하는 객체를 어떻게 할당합니까?

  27. 27

    생성자 이동 및 할당 이동. 기본 클래스의 연산자

  28. 28

    생성자 이동 및 클래스에 대한 할당 연산자 이동

  29. 29

    C ++ unique_ptr 및 다형성

뜨겁다태그

보관