Witam,
class Helper
{
public:
Helper();
template<typename T>
void sortByName(const std::vector<T>& vector )
{
std::sort(vector.begin(), vector.end());
}
};
using namespace std;
int main(int argc, char *argv[])
{
{
std::shared_ptr<Manager> manager = std::make_shared<Manager>();
std::unique_ptr<Model> model1 = std::make_unique<Model>("1",18, manager);
std::unique_ptr<Model> model2 = std::make_unique<Model>("2",25, manager);
std::vector<std::unique_ptr<Model>> vec;
vec.push_back(std::move(model1));
vec.push_back(std::move(model2));
Helper helper;
helper.sortByName(std::move(vec)); // błąd
}
return 0;
}
Błąd:
use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = Model; _Dp = std::default_delete<Model>``
Rozumiem, że nie można kopiować unique_ptr, nie rozumiem tylko jak to się tutaj odbywa. Będę wdzięczny za wytłumaczenie.