解決できないと思われる別の問題があります...またはこのサイトで見つけます...
次のように宣言されたマップを持つオブジェクト(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;
}
}
constオブジェクトではdataElements[i]を使用できないため、これはコンパイルされません。constオブジェクトが所有するマップ内のすべての要素のディープコピーを作成するにはどうすればよいですか?
find()関数がconstマップで可能であることは知っていますが、コピーしたい実際のオブジェクトに到達するにはどうすればよいですか?