将一个元组分配给一个类成员变量

时间:2017-08-01 14:58:39

标签: c++ stdtuple

我有一个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

1 个答案:

答案 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));