Ошибка с unique_ptr в проекте Oculus

В настоящее время я работаю над проектом Oculus Rift (DK1) в Ubuntu 14.04 и пытаюсь скомпилировать проект github.
Это проект Qt, написанный на C ++. У меня есть следующая ошибка об «unique_ptr». Я думаю, что установили правильные библиотеки. Я знаю, что этот код уже работал на компьютере с Ubuntu.

    g++ -c -m64 -pipe -Ofast -Wno-deprecated -O2 -std=c++0x -Wall -W -fPIE  -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -o Camera.o Camera.cpp
In file included from Include/OVR/LibOVR/Include/../Src/OVR_Device.h:33:0,
from Include/OVR/LibOVR/Include/OVR.h:35,
from Oculus.h:13,
from Input.h:13,
from Camera.h:12,
from Camera.cpp:1:
Include/OVR/LibOVR/Include/../Src/OVR_DeviceMessages.h: In constructor ‘OVR::MessageCameraFrame::MessageCameraFrame(OVR::DeviceBase*)’:
Include/OVR/LibOVR/Include/../Src/OVR_DeviceMessages.h:255:13: warning: ‘OVR::MessageCameraFrame::CameraHandle’ will be initialized after [-Wreorder]
UInt32* CameraHandle;   // Identifies the camera object associated with this frame
^
Include/OVR/LibOVR/Include/../Src/OVR_DeviceMessages.h:249:18: warning:   ‘const UByte* OVR::MessageCameraFrame::pFrameData’ [-Wreorder]
const UByte* pFrameData;  // a ptr to frame data.
^
Include/OVR/LibOVR/Include/../Src/OVR_DeviceMessages.h:226:5: warning:   when initialized here [-Wreorder]
MessageCameraFrame(DeviceBase* dev)
^
Camera.cpp: In constructor ‘Camera::Camera(const vec3&, const vec3&, const vec3&, float, float, const Input&)’:
Camera.cpp:20:18: error: use of deleted function ‘Input::Input(const Input&)’
speed_ {speed}
^
In file included from Camera.h:12:0,
from Camera.cpp:1:
Input.h:33:7: note: ‘Input::Input(const Input&)’ is implicitly deleted because the default definition would be ill-formed:
class Input
^
Input.h:33:7: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = GenericOculus; _Dp = std::default_delete<GenericOculus>]’
In file included from /usr/include/c++/4.8/memory:81:0,
from LogCpp/Log.h:8,
from Oculus.h:23,
from Input.h:13,
from Camera.h:12,
from Camera.cpp:1:
/usr/include/c++/4.8/bits/unique_ptr.h:273:7: error: declared here
unique_ptr(const unique_ptr&) = delete;
^
Camera.cpp:20:18: warning: a temporary bound to ‘Camera::input_’ only persists until the constructor exits [-Wextra]
speed_ {speed}
^
make: *** [Camera.o] Erreur 1

Спасибо

0

Решение

Проблема здесь заключается в этом сообщении:

Input.h: 33: 7: ошибка: использование удаленной функции ‘std :: unique_ptr<_Tp, _Dp> :: unique_ptr (const std :: unique_ptr<_Tp, _Dp>&)

Вы, очевидно, пытаетесь построить unique_ptr От другого unique_ptr, Это запрещено, так как unique_ptr не может быть скопировано (в этом смысл уникальный указатель). Ты можешь только переехать unique_ptr передать право собственности.

Таким образом, вам придется пересмотреть этот код с учетом этой информации.


Примечание: так как у вас очевидно есть член unique_ptr в вашем классе, и поскольку его конструктор копирования удален (т.е. явно запрещен), таким образом, конструктор копирования вашего класса по умолчанию сам удаляется, что объясняет следующее сообщение об ошибке в вашем стеке:

Camera.cpp: 20: 18: ошибка: использование удаленной функции ‘Input :: Input (const Input&)

0

Другие решения


По вопросам рекламы [email protected]