我已经阅读了很多关于此的主题,到目前为止没有任何解决方案对我有用,所以我一定做错了什么。
这有效:
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)