コレクションで不変オブジェクトを使用することにこだわっています。次のクラスがあるとします。
//in .h
class Data {
public:
Data(const DataObj& data);
Data(const Data&);
const DataObj& getDataObj() const;
private:
const DataObj _data; //actually several objects or simple type
}
inline const DataObj& Data::getDataObj() const {return _data};
//in .c
Data(const DataObj& data) : _data(data){};
Data(const Data& original) : _data(original._data){}
問題は、コレクションを使用したいときにエラーが発生することです
in member function Data&Data::operator(const Data&);
instantiation from 'typename QMap<Key,T>::iterator QMap<Key, T>::insert(const Key&, const T&)[with Key = int, T = Data]'
instantiation from here
error : non-static const member 'const DataObj Data::_data', can't use default assignment operator
プロトタイプが
Data& operator=(const Data&);
私は何をすべきか?コレクション内でクラスを使用するには、すべての定数修飾子を削除する必要がありますか? それともポインターを使用しますか?