У меня есть еще одна проблемы я не могу решить ... или найти на этом сайте ...Как (глубоко) скопировать карту из константного объекта
У меня есть объект (так называемый DataObject) с картой, объявляется следующим образом:
std::map<size_t, DataElement*> dataElements;
Теперь у меня есть функция копирования (используется в конструкторе копирования):
void DataObject::copy(DataObject const &other) {
//here some code to clean up the old data in this object...
//copy all the elements:
size = other.getSize();
for(size_t i = 0; i < size; ++i) {
DataElement* dat = new DataElement(*other.dataElements[i]);
dataElements[i] = dat;
}
}
Это не компилируется, так как dataElements [я] не представляется возможным на объект const. Как сделать глубокую копию всех элементов на карте, принадлежащей объекту const?
Я знаю, что функция find() возможна на карте const, но как мне добраться до фактического объекта, который я хочу скопировать?
, что это ошибка? Что такое DataElement? Какие параметры использует его конструктор? –
Ваша функция не отмечена как const, так как данныеElements const? – Puppy
Если ваши ключи работают от 0 до N, это почти наверняка связано с тем, что карта является неправильной коллекцией для того, что вы пытаетесь сделать. Почему бы просто не использовать вектор или deque? – CashCow