Копирование указателей из одного std::map в другой

155
24 июля 2018, 02:50

Мне нужно скопировать данные из одного std::map в другой std::map, при условии что эти данные выражены в виде указателей. То есть с помощью оператора присваивания эти данные не копируются, копируются лишь адреса. Вот конкретный пример :

std::map<String, Animation*> listOfAnimations;
listOfAnimations = OtherlistOfAnimations; // Так не работает
Answer 1

Если в mapе хранятся именно объекты Animation, а не его наследники, тогда можно сделать так:

std::map<String, Animation*> listOfAnimations = OtherlistOfAnimations;
for (auto &it : listOfAnimations)
    it.second = new Animation(*it.second);
Answer 2

Если задача не учебная, то для хранения в структурах указателей удобнее использовать бустовскую билиотеку. Там реализовано копирование map с копированием объектов. Ну и, кстати, уничтожение объектов при уничтожении контейнера автоматическое.

READ ALSO
includePath в Visual Studio Code не видны хедеры

includePath в Visual Studio Code не видны хедеры

IntelliSense в VS Code не видит хедеры, установленные в /usr/local/includeЯ собрал и установил GLUT для OpenGL, но по умолчанию хедеры и либы установились не в /usr, а в /usr/local

211
Закладываю в set 7 гарантированно различных элементов, а получаю только 6

Закладываю в set 7 гарантированно различных элементов, а получаю только 6

Имею структуру pair<int, pair<int, int>>, через typedef обозванную как guardИмею set<guard, comp>, с компаратором, который сравнивает только по second

199
Не запускается программа

Не запускается программа

Пытаюсь нарисовать треугольник, но что то идет не так

248