2
我有一個C++類,其中我有一個包含一些圖像數據和圖像尺寸的元組。我的typedef版,如下所示:分配元組類成員變量
#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);
一個演示程序如下:
#include <iostream>
#include <string>
#include <memory>
#include <tuple>
typedef std::tuple<std::unique_ptr<unsigned char[]>, int, int> ImageType;
class DataModel
{
public:
void setImage(ImageType image)
{
myImage = image;
}
ImageType myImage;
};
int main()
{
std::unique_ptr<unsigned char[]> ptr(new unsigned char[100]);
ImageType im = std::make_tuple(std::move(ptr), 10, 10);
DataModel dm;
dm.setImage(im);
return 0;
}
你也可以在這裏嘗試編譯這個在線:cpp.sh/5chnn
爲什麼使用右值引用而不是非參考? – user2079303
這將是也沒關係,那麼你只需要'的std :: move'二傳手內分配給成員變量。 – CoryKramer
@CoryKramer感謝您的答覆。我試過這個,但得到了同樣的錯誤:cpp.sh/3ssql – Luca