小编Irm*_*rma的帖子

将 unique_ptr 存储在向量中

我已经阅读了很多关于此的主题,到目前为止没有任何解决方案对我有用,所以我一定做错了什么。

这有效:

std::vector<CalendarDay*> calendarWeek;
calendarWeek.push_back(new CalendarDay(hWndParam, ctrlRc, timeParam, week * MY_CLDR_DAYS + day));
Run Code Online (Sandbox Code Playgroud)

这不起作用(根据,它应该起作用):

std::vector<std::unique_ptr<CalendarDay>> calendarWeek;
calendarWeek.push_back(std::unique_ptr<CalendarDay>(new CalendarDay(hWndParam, ctrlRc, timeParam, week * MY_CLDR_DAYS + day)));
Run Code Online (Sandbox Code Playgroud)

这也不起作用(根据,它应该起作用):

std::vector<std::unique_ptr<CalendarDay>> calendarWeek;
std::unique_ptr<CalendarDay> item(new CalendarDay(hWndParam, ctrlRc, timeParam, week * MY_CLDR_DAYS + day));
calendarWeek.push_back(std::move(item));
Run Code Online (Sandbox Code Playgroud)

这也不:

std::vector<std::unique_ptr<CalendarDay>> calendarWeek;
std::unique_ptr<CalendarDay> item(new CalendarDay(hWndParam, ctrlRc, timeParam, week * MY_CLDR_DAYS + day));
calendarWeek.emplace_back(std::move(item));
Run Code Online (Sandbox Code Playgroud)

错误总是相同的:

Error   C2280   'std::unique_ptr<CalendarDay,std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

完整代码示例:

//  DECLARED IN HEADER
std::vector<std::vector<std::unique_ptr<CalendarDay>>> calendar; // holds pointer …
Run Code Online (Sandbox Code Playgroud)

c++ vector unique-ptr

2
推荐指数
1
解决办法
3674
查看次数

标签 统计

c++ ×1

unique-ptr ×1

vector ×1