Ошибка в коде, который использует test
, т.е. код, который вы не показывали.
std::unique_ptr
по определению не может быть скопирован (это уникально !),Это делает вашу структуру недоступной для копирования.
Если вы попытаетесь скопировать test
куда-нибудь, компилятор скажет вам, что нет std::unique_ptr::operator =
, который необходим для копирования.
ДляНапример:
test x;
test y = x; // Copying. Error C2280
Или
void someFunction(test x) {}
int main() {
test x;
someFunction(x); // Copying. Error C2280
}
Error C2280 'std::unique_ptr<function,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': attempting to reference a deleted function
Решение состоит в том, чтобы избежать копирования test
.Вы можете достичь этого, передав его по ссылке.
void someFunction(test& x) {}
int main() {
test x;
someFunction(x); // OK
}