我有一个C ++类,我有一个包含一些图像数据和图像尺寸的元组。我按如下方式输入了它:
[Something From Visual Studio="Something" version yada yada]
public class StationMonitor {
// everything here
}
现在在我班上我有一个方法,我也有一个#include <tuple>
#include <memory>
typedef std::tuple<std::unique_ptr<unsigned char[]>, int, int> ImageType;
成员:
ImageType
但是,当我将一个元组分配给我的成员变量元组时,我收到以下错误:
void setImage(ImageType image)
演示程序如下:
error: use of deleted function 'std::unique_ptr<_Tp [], _Dp>& std::unique_ptr<_Tp [], _Dp>::operator=(const std::unique_ptr<_Tp [], _Dp>&) [with _Tp = unsigned char; _Dp = std::default_delete<unsigned char []>]'
_M_head(*this) = _M_head(__in);
您也可以尝试在线编译:cpp.sh/5chnn
答案 0 :(得分:3)
由于您的tuple
包含unique_ptr
,因此不可复制,因此您可以执行以下操作
void setImage(ImageType image)
{
myImage = std::move(image);
}
然后调用它
DataModel dm;
dm.setImage(std::move(im));
或直接
DataModel dm;
dm.setImage(std::make_tuple(std::move(ptr), 10, 10));