Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Oculus项目上的唯一\u ptr出错_C++_Unique Ptr_Oculus - Fatal编程技术网

C++ Oculus项目上的唯一\u ptr出错

C++ Oculus项目上的唯一\u ptr出错,c++,unique-ptr,oculus,C++,Unique Ptr,Oculus,我目前正在Ubuntu14.04上进行Oculus Rift项目DK1,我试图编译一个github项目。 这是一个用C++编写的QT项目。关于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-

我目前正在Ubuntu14.04上进行Oculus Rift项目DK1,我试图编译一个github项目。 这是一个用C++编写的QT项目。关于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

谢谢

这里的问题在于此消息:

Input.h:33:7:错误:使用删除的函数“std::unique\u ptr::unique\u ptrconst std::unique\u ptr”&

显然,您正试图从另一个唯一的\u ptr构建一个唯一的\u ptr。这是禁止的,因为unique_ptr不能被复制,这就是拥有唯一指针的意义所在。您只能使用唯一的ptr来转移所有权

因此,您必须根据这些信息修改代码

注意:由于您的类中显然有一个成员unique_ptr,并且由于其复制构造函数被删除(即明确禁止),因此您的类的默认复制构造函数本身被删除,这解释了堆栈中的以下错误消息:

Camera.cpp:20:18:错误:使用已删除的函数'Input::Inputconst Input'&